docker部署集群kafka+zookeeper+LogiKm
docker kafka+zookeeper+LogiKm集群
一【介绍】
Kafka 是一个分布式的、可水平扩展的、基于发布/订阅模式的、支持容错的消息系统。
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
LogKIm 一站式Apache Kafka集群指标监控与运维管控平台, 滴滴开源产品,用于kafka运维管控/监控告警/资源治理等核心场景。
github:https://github.com/didi/LogiKM
二【部署】
此处仅介绍部署流程。
选择3台服务器,作为node1 node2 node3 3个节点作为分布式支持。
node1 192.168.1.1
node2 192.168.1.2
node3 192.168.1.3
2.1 安装zookeeper 集群
node1 执行:
docker run -tid --name=zk-1 --restart=always --privileged=true -p 2888:2888 -p 3888:3888 -p 2181:2181 -e ZOO_MY_ID=1 -e ZOO_SERVERS="server.1=0.0.0.0:2888:3888;2181 server.2=192.168.1.2:2888:3888;2181 server.3=192.168.1.3:2888:3888;2181" -v /data/kafka_cluster/zookeeper/data:/data zookeeper:latest
node 2执行:
docker run -tid --name=zk-2 --restart=always --privileged=true -p 2888:2888 -p 3888:3888 -p 2181:2181 -e ZOO_MY_ID=2 -e ZOO_SERVERS="server.1=192.168.1.1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=192.168.1.3:2888:3888;2181" -v /data/kafka_cluster/zookeeper/data:/data zookeeper:latest
node 3执行:
docker run -tid --name=zk-3 --restart=always --privileged=true -p 2888:2888 -p 3888:3888 -p 2181:2181 -e ZOO_MY_ID=3 -e ZOO_SERVERS="server.1=192.168.1.1:2888:3888;2181 server.2=192.168.1.2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181" -v /data/kafka_cluster/zookeeper/data:/data zookeeper:latest
判断zookeeper 的节点状态
docker exec -it zk-1 bash ./bin/zkServer.sh status
结果集:
Mode: leader ## 主选举节点
Mode: follower ## 从选举节点
2.2 安装 kafka 集群
node1 执行:
docker run -itd --name=kafka-01 --restart=always --net=host --privileged=true -v /etc/hosts:/etc/hosts -v /data/kafka_cluster/kafka/data:/kafka/kafka-logs-data-1 -v /data/kafka_cluster/kafka/logs:/opt/kafka/logs -e KAFKA_ADVERTISED_HOST_NAME=192.168.1.1 -e HOST_IP=192.168.1.1 -e KAFKA_ADVERTISED_PORT=9092 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 -e KAFKA_BROKER_ID=0 wurstmeister/kafka
node 2执行:
`docker run -itd --name=kafka-02 --restart=always --net=host --privileged=true -v /etc/hosts:/etc/hosts -v /data/kafka_cluster/kafka/data:/kafka/kafka-logs-data-2 -v /data/kafka_cluster/kafka/logs:/opt/kafka/logs -e KAFKA_ADVERTISED_HOST_NAME=192.168.1.2 -e HOST_IP=192.168.1.2 -e KAFKA_ADVERTISED_PORT=9092 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 -e KAFKA_BROKER_ID=1` wurstmeister/kafka
node 3执行:
`docker run -itd --name=kafka-03 --restart=always --net=host --privileged=true -v /etc/hosts:/etc/hosts -v /data/kafka_cluster/kafka/data:/kafka/kafka-logs-data-3 -v /data/kafka_cluster/kafka/logs:/opt/kafka/logs -e KAFKA_ADVERTISED_HOST_NAME=192.168.1.3 -e HOST_IP=192.168.1.3 -e KAFKA_ADVERTISED_PORT=9092 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 -e KAFKA_BROKER_ID=2` wurstmeister/kafka
2.3 安装LogKim
基于https://github.com/didi/LogiKM/blob/master/Dockerfile
封装docker 镜像包:
kafka-manager:1.0.0
启动执行:
docker run -d -p 8080:8080 -p 10000:9999 --restart=always --name kafka-manager-logkim -e JAVA_AGENT="-javaagent:/opt/agent/jmx_prometheus_javaagent-0.15.0.jar=9999:/opt/agent/config.yaml" -e PARAMS="--spring.datasource.kafka-manager.jdbc-url=jdbc:mysql://192.168.1.1:3306/logi_kafka_manager?characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8 --spring.datasource.kafka-manager.username=*** --spring.datasource.kafka-manager.password=****" kafka-manager:1.0.0
三【优化】
文档:https://github.com/didi/LogiKM/blob/master/docs/user_guide/faq.md
3.1 调整kafka 集群node 节点上的 jmx 端口
docker exec -it kafka-01 bash
vi /opt/kafka_2.13-2.8.1/bin/kafka-run-class.sh
###调整端口号,调整kafka ip
#配置jmx_Port
JMX_PORT=19999
JMX settings
if [ -z "$KAFKA_JMX_OPTS" ]; then
KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.rmi.port=19999 -Djava.rmi.server.hostname=192.168.1.1 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.ssl=false "
fi
更多推荐
所有评论(0)