Kafka 集群部署
一、集群规划
h136 h138 h140 zk zk zk kafka kafka kafka
二、下载
https://kafka.apache.org/downloads.html
Kafka 由 Scala 编写,kafka_2.12-2.3.0:其中 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/
可视化 UI:https://www.cnblogs.com/jhxxb/p/11502812.html
Docker 模式安装
https://registry.hub.docker.com/r/bitnami/kafka
https://registry.hub.docker.com/r/wurstmeister/kafka
# 部署多个只需要修改 name 和暴露的端口再执行即可 docker run -d --restart=always --network zookeeper_net \ -e ALLOW_PLAINTEXT_LISTENER=yes \ -e KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181 \ -p 9092:9092 \ --name kafka-server bitnami/kafka
可视化 UI
https://github.com/sheepkiller/kafka-manager-docker
docker run -d --restart=always --network zookeeper_net \ -e ZK_HOSTS=zoo1:2181,zoo2:2181,zoo3:2181 \ -e APPLICATION_SECRET=letmein \ -p 9000:9000 \ --name kafka-manager sheepkiller/kafka-manager
https://registry.hub.docker.com/r/obsidiandynamics/kafdrop
docker run -d --restart=always --network zookeeper_net \ -e KAFKA_BROKERCONNECT=kafka92:9092,kafka93:9092,kafka94:9092 \ -e JVM_OPTS="-Xms32M -Xmx64M" \ -e SERVER_SERVLET_CONTEXTPATH="/" \ -p 9000:9000 \ --name kafdrop obsidiandynamics/kafdrop:latest
https://registry.hub.docker.com/r/rottenleaf/kafka-eagle
用户名:admin,密码:123456
docker run -d --name kafka-eagle rottenleaf/kafka-eagle:2.0.3 docker cp kafka-eagle:/kafka-eagle/conf/ /home/dsw/kafka-eagle/ vim /home/dsw/kafka-eagle/system-config.properties # 修改 kafka.eagle.zk.cluster.alias(集群地址) 和 kafka.eagle.url(ke.db 所在的文件夹要存在) docker rm -f kafka-eagle docker run -d --restart always --network zookeeper_net \ -v /home/dsw/kafka-eagle:/kafka-eagle/conf \ -p 8048:8048 \ --name kafka-eagle rottenleaf/kafka-eagle:2.0.3 docker logs -f kafka-eagle
四、手动安装下集群启动和关闭
需要每台节点都去执行启动脚本,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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步