.env配置文件为docker-compose.yml提供了多个zookeeper的ip:client-port列表
# default env for kafka docker-compose.yml # set zookeeper cluster, pattern is "zk1-host:port,zk2-host:port,zk3-host:port", use a comma as multiple servers separator. ZOO_SERVERS=10.2.114.110:2181,10.2.114.111:2182,10.2.114.112:2183以kafka-01目录下的docker-compose.yml,为docker-compse的配置文件
version: "3" services: kafka-1: image: wurstmeister/kafka:2.12-2.1.1 restart: always container_name: kafka-1 environment: - KAFKA_BROKER_ID=1 #kafka的broker.id,区分不同broker - KAFKA_LISTENERS=PLAINTEXT://kafka1:9092 #绑定监听9092端口 - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka1:9092 #绑定发布订阅的端口 - KAFKA_ZOOKEEPER_CONNECT=${ZOO_SERVERS} #连接zookeeper的服务地址 - KAFKA_MESSAGE_MAX_BYTES=2000000 #单条消息最大字节数 #- KAFKA_CREATE_TOPICS=Topic1:1:3,Topic2:1:1:compact #创建broker时创建的topic:partition-num:replica-num[:clean.policy] network_mode: "host"KAFKA_CREATE_TOPICS使用官方说明:Topic 1 will have 1 partition and 3 replicas, Topic 2 will have 1 partition, 1 replica and a cleanup.policy set to compact. 文档地址:https://hub.docker.com/r/wurstmeister/kafka
Zookeeper集群使用请确保所布署的 1~3 台服务器网络可以ping通
确保第一台主机的2181\2888\3888端口未占用,第二台主机的2182\2889\3889端口未占用,第三台主机的2183\2890\3890端口未占用
复制zk-01到第一台主机、复制zk-02到第二台主机、复制zk-03到第三台主机
修改zk-01\zk-02\zk-03目录下的.env中的ZOO_SERVERS的值,按上述配置要求修改。修改完后的配置应该是集群内通用的,可以scp复制过去。
单台主机请为docker-zk-cluster-up.sh与docker-zk-cluster-down.sh授执行权,使用它们进行up和down操作;多台主机请手动分别进入zk-0x目录,执行docker-compose up -d以启动,执行docker-compose down以关闭。
Kafka集群使用使用前确保各主机可以互相ping通
确保zookeeper的服务列表与各对应的zookeeper的ip与客户端口相同,如不同注意修改.env,集群中.env文件相同,可scp复制
确保zookeeper集群启动
复制kafka-01到第一台主机、复制kafka-02到第二台主机、复制kafka-03到第三台主机
确保这几台主机对应的占用端口号不被占用 kafka-01对应9092、 kafka-02对应9093、kafka-03对应9094、kafka-manager对应19000
分别对每一台kafka-0x所在的主机修改/etc/hosts,例
10.2.114.110 kafka1 10.2.114.111 kafka2 10.2.114.112 kafka3其中每个主机只需要设置自己的主机上的host,比如我复制了kafka-01我就写本机ip kafka1 ,依次类推.
单台主机部署kafka集群请为docker-kafka-cluster-up.sh与docker-kafka-cluster-down.sh授执行权,不要移动目录,通过这两个shell脚本来启动项目;多台主机请手动进入kafka-0x目录下,执行docker-compose up -d以后台启动,执行docker-compose down以移除容器
启动脚本中没有启动kafka-manager,有需要请自行启动。
文中配置部分的ip因使用同一台主机做的测试,所以ip相同,为了防止误解,在文中已经修改了ip,具体详见:
docker-zookeeper-cluster源码 https://github.com/hellxz/docker-zookeeper-cluster.git
docker-kafka-cluster源码 https://github.com/hellxz/docker-kafka-cluster.git