Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save yusufsyaifudin/a3ca6db1b11aa2d3f446e9bf5b0dd844 to your computer and use it in GitHub Desktop.
Save yusufsyaifudin/a3ca6db1b11aa2d3f446e9bf5b0dd844 to your computer and use it in GitHub Desktop.
Docker compose file running kafka in cluster mode
# create topic: /opt/kafka/bin/kafka-topics.sh --create --zookeeper zoo1:2181,zoo2:2181 --topic qmessage --partitions 4 --replication-factor 2
# use official zookeeper image since the wurstmeister/zookeeper image does not currently support zookeeper in replicated mode
# (https://github.com/wurstmeister/kafka-docker/issues/372#issuecomment-409166940)
# for the first run, set the KAFKA_CREATE_TOPICS: 'qmessage:4:2' to create new topic or use the command above.
# For every restart, don't set it, since it will recreate the topic, hence your old data will lost and will make your consumer missing some data.
version: '2'
services:
zoo1:
image: zookeeper:3.4.13
container_name: zoo1
restart: always
ports:
- 2181:2181
- 2888
- 3888
environment:
ZOO_MY_ID: 1
ZOO_TICK_TIME: 2000
ZOO_INIT_LIMIT: 5
ZOO_SYNC_LIMIT: 2
ZOO_MAX_CLIENT_CNXNS: 60
ZOO_STANDALONE_ENABLED: 'false'
ZOO_SERVERS: 'server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888'
volumes:
- ./kafka/zoo1/data:/data
- ./kafka/zoo1/datalog:/datalog
zoo2:
image: zookeeper:3.4.13
container_name: zoo2
restart: always
ports:
- 2182:2181
- 2888
- 3888
environment:
ZOO_MY_ID: 2
ZOO_TICK_TIME: 2000
ZOO_INIT_LIMIT: 5
ZOO_SYNC_LIMIT: 2
ZOO_MAX_CLIENT_CNXNS: 60
ZOO_STANDALONE_ENABLED: 'false'
ZOO_SERVERS: 'server.1=zoo1:2888:3888 server.2=0.0.0.0:2888:3888'
volumes:
- ./kafka/zoo2/data:/data
- ./kafka/zoo2/datalog:/datalog
kafka1:
image: wurstmeister/kafka:2.11-1.1.1
container_name: kafka1
restart: always
ports:
- "9092:9092"
environment:
KAFKA_CREATE_TOPICS: 'message:4:2'
KAFKA_ADVERTISED_HOST_NAME: kafka1
KAFKA_ZOOKEEPER_CONNECT: 'zoo1:2181,zoo2:2181'
KAFKA_BROKER_ID: 1
KAFKA_NUM_PARTITIONS: 4
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
KAFKA_LOG_DIRS: /kafka/logs
depends_on:
- zoo1
- zoo2
volumes:
- ./kafka/broker1/kafka-logs:/kafka
- ./kafka/broker1/logs:/logs
- ./kafka/broker1/data:/data
kafka2:
image: wurstmeister/kafka:2.11-1.1.1
container_name: kafka2
restart: always
ports:
- "9093:9092"
- "9998:9998"
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka2
KAFKA_ZOOKEEPER_CONNECT: 'zoo1:2181,zoo2:2181'
KAFKA_BROKER_ID: 2
KAFKA_NUM_PARTITIONS: 4
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
KAFKA_LOG_DIRS: /kafka/logs
depends_on:
- zoo1
- zoo2
volumes:
- ./kafka/broker2/kafka-logs:/kafka
- ./kafka/broker2/logs:/logs
- ./kafka/broker2/data:/data
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment