大家好 我是积极向上的湘锅锅
首先得要有一个能正常运行的Docker Desktop
网上教程很多
这里就不再阐述
我的版本是Docker Desktop 4.11.1
如果一个一个的配置docker来做zk集群太麻烦,docker有一个解决方案,通过一个配置文件,就能搭建一个集群。
创建一个名为:docker-compose.yml的配置文件
(创建一个txt,把内容复制进去,改下名字和后缀)
比如我们要创建集群数是三台
version: '3.1'
services:
zoo1:
image: zookeeper
restart: always
hostname: zoo1
container_name: zoo1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo2:
image: zookeeper
restart: always
hostname: zoo2
container_name: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo3:
image: zookeeper
restart: always
hostname: zoo3
container_name: zoo3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
注意要看自己的ZK版本,zk的版本不同,ZOO_SERVERS也不同, zookeeper3.5之前不需要加;2181,zookeeper3.5之后需要加
具体写法参照zookeeper在docker hub的主页: https://hub.docker.com/_/zookeeper
在 docker-compose.yml 的文件目录下,执行指令
docker-compose up -d -d
执行后的结果
PS C:\xxxxxxxx> docker-compose up -d
Creating network "desktop_default" with the default driver
Creating zoo1 ... done
Creating zoo3 ... done
Creating zoo2 ... done
执行 docker ps 查看一下是否添加成功了,如果是如下内容代表成功了
当然在Docker Desktop也可以看到
查看zookeeper状态
连接到zoo1,查看一下服务的状态
docker exec -it zoo1 bash ./bin/zkServer.sh status
返回结果
C:\Users\23172>docker exec -it zoo1 bash ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
Mode: follower 追随者节点
Mode: leader 领导者节点
也可以看看zoo2和zoo3
连接到zoo1上试一下
docker exec -it zoo1 /bin/bash
返回的内容是
root@zoo1:/apache-zookeeper-3.8.0-bin#
接下来连接查看
./bin/zkCli.sh -server 127.0.0.1:2181
ls /
有内容就表示ZK集群OK了
docker pull bitnami/kafka
输入
docker images
看到有bitnami/kafka就成功了
先创建kakfa1实例
docker run -d --name kafka1 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=本机ip地址:2181 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://本机ip地址:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t bitnami/kafka
注意千万不要就开始复制然后运行
有几个地方要注意
第一处是kafka实例的名字,不能重复
第二处是端口号,如果换成9093,就全部改成9093
第三处是broker的id
第四处记得是填本机ip地址,不清楚的直接ipconfig查看
然后再创建一个kakfa2实例
只需要改如下地方
这里小伙伴可以自己去尝试
在Docker Desktop看到如下就表示成功了
docker search kafka-manager
运行KafKa-manage:
docker run -dit -p 9000:9000 -e ZK_HOSTS="主机IP:2181" sheepkiller/kafka-manager
使用http://localhost:9000/登录即可