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

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

 


https://kafka.apache.org/documentation/#quickstart

posted @ 2019-09-11 20:28  江湖小小白  阅读(308)  评论(0编辑  收藏  举报