Add zk cluster

pull/135/head
Baohua Yang 2020-02-12 10:30:08 -08:00
parent 7e2eb2da3a
commit 106f4b027f
3 changed files with 136 additions and 0 deletions

18
zookeeper/Makefile 100644
View File

@ -0,0 +1,18 @@
download:
docker pull yeasy/kafka:latest
start:
docker stack deploy --compose-file docker-compose.yaml zk
stop:
docker stack rm zk
restart: stop start
zookeeper:
docker exec -it zookeeper1 bash
kafka:
docker exec -it kafka1 bash
cli:
docker exec -it cli bash

View File

@ -0,0 +1,62 @@
# Zookeeper
This project provides several useful Docker-Compose script to help quickly bootup a Zookeeper cluster.
Currently we support Zookeeper 3.5.6.*.
TBD
## Start
```bash
$ docker-compose up -d
```
## Test
Open a new shell to the cli container:
```bash
$ docker exec -it cli bash
```
In the container shell, create a new topic and wait for new msg (dir default to KAFKA_HOME=/opt/kafka/).
```bash
# pwd
/opt/kafka
# bash /tmp/topic_create.sh
Create a topic test by connecting to zookeeper
Created topic test
bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test
Created topic test.
# bash /tmp/topic_list.sh
List all topics at zookeeper
bin/kafka-topics.sh --list --zookeeper zookeeper:2181
test
# export KAFKA_HOST=kafka1
# bash /tmp/msg_recv.sh
Recving msg to topic test by connecting to kafka1
bin/kafka-console-consumer.sh --bootstrap-server kafka1:9092 --topic test --from-beginning
```
Now open a new shell to the cli container.
```bash
# export KAFKA_HOST=kafka2
# bash /tmp/msg_send.sh
Send msg to topic test by connecting to kafka2
bin/kafka-console-producer.sh --broker-list kafka2:9092 --topic test
>msg_hello
```
Check the recving msg shell to get that msg.
## Stop
```bash
$ docker-compose down
```

View File

@ -0,0 +1,56 @@
# The minimal kafka service
# github.com/yeasy/docker-compose-files
# * zk: zk node for kafka, 0, 1, 2
# * kafka: kafka service, will default to connect to zookeeper
# * cli: client to test kafka service
version: '3'
services:
zookeeper1:
image: yeasy/kafka:latest
container_name: zookeeper1
hostname: zookeeper1
ports:
- "2182:2181" # zk connection port
environment:
- ZK_ID=1 # when bootup, will read this and update the /tmp/zookeeper/myid file
healthcheck:
disable: true
command: bash -c 'bash /tmp/start_zk.sh'
zookeeper2:
image: yeasy/kafka:latest
container_name: zookeeper2
hostname: zookeeper2
ports:
- "2183:2181" # zk connection port
environment:
- ZK_ID=2 # when bootup, will read this and update the /tmp/zookeeper/myid file
healthcheck:
disable: true
command: bash -c 'bash /tmp/start_zk.sh'
zookeeper3:
image: yeasy/kafka:latest
container_name: zookeeper3
hostname: zookeeper3
ports:
- "2181:2181" # zk connection port
environment:
- ZK_ID=3 # when bootup, will read this and update the /tmp/zookeeper/myid file
healthcheck:
disable: true
command: bash -c 'bash /tmp/start_zk.sh'
cli: # used for testing kafka cmds, see /tmp/*.sh
image: yeasy/kafka:latest
container_name: cli
hostname: cli
environment:
- ZK_HOST=zookeeper1 # zk host to connect to
# bash /opt/zookeeper/bin/zkCli.sh -server ${ZK_HOST}:2181
healthcheck:
disable: true
command: bash -c 'while true; do sleep 20200116; done'