一、集群规划
h136 h138 h140 zk zk zk kafka kafka kafka
二、下载
https://kafka.apache.org/downloads.html
kafka_2.12-2.3.0:Kafka 由 Scala 编写,2.12 为 Scala 版本,2.3.0 为 Kafka 版本
三、部署
Kafka 集群依赖于 ZooKeeper 集群。ZooKeeper 集群搭建参考:https://www.cnblogs.com/jhxxb/p/10744264.html
# 解压 tar -zxf /opt/kafka_2.12-2.3.0.tgz -C /opt/ # 编辑配置 vim /opt/kafka_2.12-2.3.0/config/server.properties
这里主要配置三个:唯一 ID(必须为整数,且要保证每个节点 ID 不一样),数据路径、 Zookeeper 集群地址
# broker 的全局唯一编号,不能重复 broker.id=136 # 开启删除 topic 功能,默认为标记删除 delete.topic.enable=true # 处理网络请求的线程数量 num.network.threads=3 # 用来处理磁盘 IO 的现成数量 num.io.threads=8 # 发送套接字的缓冲区大小 socket.send.buffer.bytes=102400 # 接收套接字的缓冲区大小 socket.receive.buffer.bytes=102400 # 请求套接字的缓冲区大小 socket.request.max.bytes=104857600 # kafka 运行日志存放的路径,默认日志路径为 logs,这里和默认日志数据分开存放 log.dirs=/opt/kafka_2.12-2.3.0/data # topic 在当前 broker 上的分区个数 num.partitions=1 # 用来恢复和清理 data 下数据的线程数量 num.recovery.threads.per.data.dir=1 # segment 文件保留的最长时间,超时将被删除 log.retention.hours=168 # 配置连接 Zookeeper 集群地址 zookeeper.connect=h136:2181,h138:2181,h140:2181
配置好后分发到其它机器,这里使用 Rsync,用其它工具也可以,如 SCP 等。
rsync -av /opt/kafka_2.12-2.3.0 h138:/opt/ rsync -av /opt/kafka_2.12-2.3.0 h140:/opt/
最后去每台节点上修改唯一 ID。
配置环境变量,方便启动。
vim /etc/profile #KAFKA_HOME export KAFKA_HOME=/opt/kafka_2.12-2.3.0 export PATH=$PATH:$KAFKA_HOME/bin source /etc/profile rsync -av /etc/profile h138:/etc/ rsync -av /etc/profile h140:/etc/
四、集群启动和关闭
需要每台节点都去执行启动脚本,Kafka 自己不支持群起。
# 启动 kafka-server-start.sh -daemon /opt/kafka_2.12-2.3.0/config/server.properties # 关闭 kafka-server-stop.sh stop
每次都去各个节点执行比较麻烦,可以使用脚本。
for i in h136 h138 h140 do echo "========== $i ==========" ssh $i '/opt/kafka_2.12-2.3.0/bin/kafka-server-start.sh -daemon /opt/kafka_2.12-2.3.0/config/server.properties' done