一、前言
三台物理机分别部署一个kafka实例并关联为一组kafka集群
二、部署
1、先创建zookeeper集群
#kafka需要依赖于zookeeper,所以建立kafka实例前要先部署zookeeper集群
#而kafka多实例想关联为一个集群除了配置文件的修改还要确保所有实例都连接到同一个kafka实例或kafka集群
#kafka集群部署只要保证唯一的brokerid值和所有kafka节点链接到同一个zookeeper集群就可以实现了
#zookeeper集群搭建
https://blog.csdn.net/weixin_48617665/article/details/128454423?spm=1001.2014.3001.5501
2、kafka安装包下载
wget https://archive.apache.org/dist/kafka/2.0.0/kafka_2.12-2.0.0.tgz
#注意kafka_2.12-2.0.0.tgz,前面的2.12是scala版本,后面的2.0.0才是kafka版本
mv kafka_2.12-2.0.0.tgz /usr/local && cd /usr/local && tar -zxvf kafka_2.12-2.0.0.tgz
3、修改配置文件
cd kafka_2.12-2.0.0/config/
vim server.properties
您只需要修改以下配置即可:
------------------------------------
broker.id=1
#全局唯一编号不能重复,节点2就是broker.id=2节点3就是broker.id=3
#host.name=***
#全局唯一编号不能重复并且可以不配置
delete.topic.enable=true
#这条要true和false需要关注一下,不加delete.topic.enable=true的话不会真的删除topic只是对删除的topic打上了标记,仍然占用磁盘数据
log.dirs=/usr/local/kafka_2.12-2.0.0/logs
#日志目录自定义位置
zookeeper.connect=ZOOKEEPER_IP1:2181,ZOOKEEPER_IP2:2181ZOOKEEPER_IP3:2181
#当前kafka实例连接zookeeper的地址,三个kafka实例必须一致连接到用一个集群,如果连接的是一个zookeeper集群就把每个zookeeper的IP:PORT都写上,如果是一个zookeeper实例就写一个就可以了
--------------------------------------
其他两个节点同理修改配置
4、依次启用三个kafka节点
bin/kafka-server-start.sh -daemon config/server.properties
三、验证
1、如何查看kafka集群broker节点数
#登录任意一个kafka集群所连接的zookeeper实例的client端
./bin/zkCli.sh
ls /brokers/ids
2、实际操作一遍kafka创建topic并订阅消息流程
#创建topic
bin/kafka-topics.sh --create --zookeeper zookeeper_IP:zookeeper_PORT --topic test --partitions 3 --replication-factor 1
#查看topic
bin/kafka-topics.sh -describe --zookeeper zookeeper_IP:zookeeper_PORT
#模拟生产者向主题写入数据
bin/kafka-console-producer.sh --broker-list kafka_IP:kafka_PORT --topic test
ctrl+C退出
#模拟消费者订阅内容
bin/kafka-console-consumer.sh --bootstrap-server kafka_IP:kafka_PORT --topic test --from-beginning
bin/kafka-topics.sh -describe --zookeeper zookeeper_IP:zookeeper_PORT 解读: