1. 准备工作
由于没有那么多台机器,所以在同一台机器上运行多个Kafka服务,只是端口不同
安装路径: /usr/local/tools ; 服务器IP: 192.168.44.161
基于Kafka单机版安装流程,请查看 CentOS安装kafka 3.2.0单机版
所有Kafka节点连接到相同的ZK(或ZK集群),需要先安装一个ZK,请参考 CentOS安装Zookeeper 3.7.1单节点 , 在本例中ZK也安装在这台机器上。
注意:单机的kafka和集群的Kafka不要混用一个ZK,否则会出现数据混乱的问题。
2. 下载解压kafka
1 | cd /usr/local/tools |
3. 修改配置文件
复制3个配置文件
1 | cd config |
修改配置文件中的broker.id分别为1、2、3
listeners这一行取消注释,端口号分别为9093、9094、9095
log.dirs分别设置为kafka-logs1、kafka-logs2、kafka-logs3(先创建)
1 | mkdir -p /tmp/kafka-logs1 /tmp/kafka-logs2 /tmp/kafka-logs3 |
server1.properties 的配置:
1
2
3broker.id=1
listeners=PLAINTEXT://192.168.44.161:9093
log.dirs=/tmp/kafka-logs1server2.properties 的配置:
1
2
3broker.id=2
listeners=PLAINTEXT://192.168.44.161:9094
log.dirs=/tmp/kafka-logs2server3.properties 的配置:
1
2
3broker.id=3
listeners=PLAINTEXT://192.168.44.161:9095
log.dirs=/tmp/kafka-logs3
如果listeners取消注释导致topic创建失败,可以修改为
1 | listeners=PLAINTEXT://:9093 |
4. 启动3个服务
- 启动ZK
1
2cd /usr/local/tools/apache-zookeeper-3.7.1-bin/bin
./zkServer.sh start - 启动Kafka
1
2
3
4cd ../bin
./kafka-server-start.sh -daemon ../config/server1.properties
./kafka-server-start.sh -daemon ../config/server2.properties
./kafka-server-start.sh -daemon ../config/server3.properties
PS:如果遇到zk node exists的问题,先把brokers节点删掉(临时解决方案)。
5. 集群下创建Topic
在bin目录下,创建一个名为ygbtest的topic
,只有一个服务本一个分区:
1 | sh kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic ygbtest |
查看一创建的topic:
1 | sh kafka-topics.sh -list -zookeeper localhost:2181 |
6. 集群下启动Consumer
在一个新的原车鞥窗口中:
1 | sh kafka-console-consumer.sh --bootstrap-server 192.168.44.161:9093,192.168.44.161:9094,192.168.44.161:9095 --topic ygbtest --from-beginning |
kafka相关命令可以查看这篇博客 kafka常用命令
7. 集群下启动Producer
打开一个新的窗口,在kafka解压目录下:
1 | sh kafka-console-producer.sh --broker-list 192.168.44.161:9093,192.168.44.161:9094,192.168.44.161:9095 --topic ygbtest |
8. 集群下Producer窗口发送消息
在生产者Producer
窗口输入hello world 回车