前置条件
搭建一个zookeeper集群,参考文章
创建覆盖网络xxl
//同一个覆盖网络的服务可以通过服务名和ip互相访问,不同的覆盖网络不行
docker network create -d overlay --scope swarm --subnet 172.22.0.0/16 --gateway 172.22.0.1 xxl
编写kafka.yml文件
version: "3.7"
networks:
xxl:
external: true
name: xxl
driver: overlay
ipam:
config:
- subnet: 172.22.0.0/16
services:
kafka1:
image: wurstmeister/kafka:2.12-2.4.0
networks:
- xxl
ports:
- "9094:9094"
volumes:
- ./kafka/data1:/kafka
environment:
- KAFKA_BROKER_ID=1
- KAFKA_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
- KAFKA_ADVERTISED_LISTENERS=INSIDE://:9092,OUTSIDE://192.168.1.108:9094
- KAFKA_LISTENERS=INSIDE://:9092,OUTSIDE://:9094
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
- KAFKA_INTER_BROKER_LISTENER_NAME=INSIDE
- KAFKA_NUM_PARTITIONS=3
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=3
- TRANSACTION_STATE_LOG_REPLICATION_FACTOR=3
- TRANSACTION_STATE_LOG_MIN_ISR=3
deploy:
replicas: 1
kafka2:
image: wurstmeister/kafka:2.12-2.4.0
networks:
- xxl
ports:
- "9095:9095"
volumes:
- ./kafka/data2:/kafka
environment:
- KAFKA_BROKER_ID=2
- KAFKA_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
- KAFKA_ADVERTISED_LISTENERS=INSIDE://:9092,OUTSIDE://192.168.1.108:9095
- KAFKA_LISTENERS=INSIDE://:9092,OUTSIDE://:9095
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
- KAFKA_INTER_BROKER_LISTENER_NAME=INSIDE
- KAFKA_NUM_PARTITIONS=3
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=3
- TRANSACTION_STATE_LOG_REPLICATION_FACTOR=3
- TRANSACTION_STATE_LOG_MIN_ISR=3
deploy:
replicas: 1
kafka3:
image: wurstmeister/kafka:2.12-2.4.0
networks:
- xxl
ports:
- "9096:9096"
volumes:
- ./kafka/data3:/kafka
environment:
- KAFKA_BROKER_ID=3
- KAFKA_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
- KAFKA_ADVERTISED_LISTENERS=INSIDE://:9092,OUTSIDE://192.168.1.108:9096
- KAFKA_LISTENERS=INSIDE://:9092,OUTSIDE://:9096
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
- KAFKA_INTER_BROKER_LISTENER_NAME=INSIDE
- KAFKA_NUM_PARTITIONS=3
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=3
- TRANSACTION_STATE_LOG_REPLICATION_FACTOR=3
- TRANSACTION_STATE_LOG_MIN_ISR=3
deploy:
replicas: 1
部署服务栈
//部署
docke swarm deploy -c kafka.yml kk
//移除
docker swarm rm kk