在虚拟机单机环境搭建Kafka集群
安装java
zookeeper需要java运行环境
yum install java
安装zookeeper
获取安装包,上传
zookeeper地址: https://zookeeper.apache.org/releases.html
解压
解压到/usr/local/software这个目录下,执行
tar -zxvf zookeeper.tar.gz
修改文件夹名字
mv apache-zookeeper-3.7.0-bin zookeeper
配置环境变量
为了方便任何目录启动和访问zookeeper
vim /etc/profile
#zookeeper
export ZOOKEEPER_HOME=/usr/local/software/zookeeper
export PATH=$PATH:${ZOOKEEPER_HOME}/bin
source /etc/profile
修改zookeeper配置文件
进入conf目录,修改配置文件名字,zookeeper启动默认读zoo.cfg这个配置文件
mv zoo_sample.cfg zoo.cfg
zookeeper命令
zkServer.sh start|stop|restart|status
验证是否启动成功
zkCli.sh
安装Kafka
下载Kafka安装包
下载地址: https://kafka.apache.org/downloads
上传至虚拟机/usr/local/software
解压
tar -zxvf kafka.tar
复制server.properties配置文件
cp server.properties server-0.properties
cp server.properties server-1.properties
cp server.properties server-2.properties
修改server.properties
修改如下配置
# 集群节点编号
broker.id=0
#Kafka数据存储位置,三个配置文件配置不同的log地址
log.dirs=/opt/kafka/kafka_2.12-2.2.1/logs
# zk地址
zookeeper.connect=localhost:2181
# istener配置是用来绑定BrokerIP+端口地址
listeners=PLAINTEXT://192.168.38.22:9092
# 指定Kafka Broker对外公开的网络IP和端口
advertised.listeners=PLAINTEXT://192.168.38.22:9092
启动Kafka
nohup bin/kafka-server-start.sh config/server-0.properties > nohup-0.txt 2>&1 &
nohup bin/kafka-server-start.sh config/server-1.properties > nohup-1.txt 2>&1 &
nohup bin/kafka-server-start.sh config/server-2.properties > nohup-2.txt 2>&1 &
测试Kafka
# 创建名为test的主题
bin/kafka-topics.sh --create --bootstrap-server 172.16.177.135:9092 --topic test
# 查看目前Kafka中的主题
bin/kafka-topics.sh --list --bootstrap-server 172.16.177.135:9092
# 查看目前Kafka中的主题
bin/kafka-topics.sh --list --bootstrap-server 172.16.177.135:9092
# 生产消息到Kafka
bin/kafka-console-producer.sh --broker-list 172.16.177.135:9092 --topic test
# 从Kafka消费消息
bin/kafka-console-consumer.sh --bootstrap-server 172.16.177.135:9092 --topic test --from-beginning
# 1个分区3个副本的基准测试
bin/kafka-topics.sh --zookeeper 172.16.177.135:2181 --create --topic benchmark --partitions 1 --replication-factor 3
关闭Kafka
创建脚本
bin/kafka-server-stop.sh config/server-0.properties
bin/kafka-server-stop.sh config/server-1.properties
bin/kafka-server-stop.sh config/server-2.properties
关闭防火墙
如果idea需要创建java程序往Kafka发送数据,需要开放对应的端口,或者直接关闭防火墙
systemctl stop firewalld && systemctl disable firewalld