Install zookeeper and kafka cluster
build zookeeper
Start directly without talking nonsense, please prepare the image in advance or pull the new version image
# 拉取镜像
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
# 拉取完毕后查看
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wurstmeister/kafka latest c3b059ede60e 4 months ago 507MB
zookeeper latest 3b83d9104a4c 4 years ago 129MB
# 启动
docker run --name zookeeper -d --restart=always -p 2181:2181 -p 2888:2888 -p 3888:3888 wurstmeister/zookeeper:latest
1b3491a1055a0bb6a2569ff14d1065c7121f2b783c7af863d26c434574ddfc15
# 进入容器
docker exec -it zookeeper bash
pwd
/opt/zookeeper-3.4.13
# 进入conf文件夹,修改zoo.cfg,在最下方添加
vi zoo.cfg
server.1=0.0.0.0:2888:3888
server.2=192.168.119.145:2888:3888
server.3=192.168.119.146:2888:3888
# 另外两台一样添加
# 第二台
server.1=192.168.119.144:2888:3888
server.2=0.0.0.0:2888:3888
server.3=192.168.119.146:2888:3888
# 第三台
server.1=192.168.119.144:2888:3888
server.2=192.168.119.145:2888:3888
server.3=0.0.0.0:2888:3888
Please modify the ip of the node where the machine is located to 0.0.0.0
and my current node is server.1, then modify the ip to 0.0.0.0
After modification, add the value in the myid file to 1
# 第一台
echo 1 > data/myid
# 第二台
echo 2 > data/myid
# 第三台
echo 3 > data/myid
So far we have configured it, just restart the zookeeper container.
docker restart zookeeper
Next verify the cluster
./bin/zkServer.sh status
# 可以看到集群状态
# server.1
Mode: follower
# server.2
Mode: follower
# server.3
Mode: leader
The cluster is built
build kafka
# 运行准备好的镜像
# 1
docker run -d --restart=always --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.119.144:2181,192.168.119.145:2181,192.168.119.146:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.119.144:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -d wurstmeister/kafka:latest
# 2
docker run -d --restart=always --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=192.168.119.144:2181,192.168.119.145:2181,192.168.119.146:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.119.145:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -d wurstmeister/kafka:latest
# 3
docker run -d --restart=always --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=192.168.119.144:2181,192.168.119.145:2181,192.168.119.146:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.119.146:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -d wurstmeister/kafka:latest
# 查看zookeeper
docker exec -it zookeeper bash
./bin/zkCli.sh
ls /brokers/ids
[2, 1, 0]
# 创建topic
# 进入容器
docker exec -it kafka bash
cd /opt/kafka/
./bin/kafka-topics.sh --create --zookeeper 192.168.119.144:2181 --topic test --partitions 1 --replication-factor 1
Created topic test.
# 到另外两台查看新创建的test
# 查看topics
# 192.168.119.145
./bin/kafka-topics.sh --list --zookeeper 192.168.119.145:2181
test
# 192.168.119.145
./bin/kafka-topics.sh --list --zookeeper 192.168.119.146:2181
test
test
# 写(CTRL+D结束写内容)
# 192.168.119.144
./bin/kafka-console-producer.sh --broker-list 192.168.119.144:9092 --topic test
>hello
>这是一个帅比
# 读(CTRL+C结束读内容)
# 192.168.119.146
./bin/kafka-console-consumer.sh --bootstrap-server 192.168.119.146:9092 --topic test --from-beginning
hello
这是一个帅比
Finish!