前言
在单台服务器上,部署三个docker容器,搭建zookeeper集群,模拟多台服务器上安装zookeeper集群,其实步骤是一样的,我们把三个容器看成三台不同的服务器就行了,这里我们使用docker官网最新的zookeeper镜像搭建集群
拉取镜像
docker pull zookeeper
这里不指定tag,它会默认拉取最新的镜像
或者指定镜像版本
docker pull zookeeper:3.4.10
启动容器
docker run -d --name zk01 -p 2181:2181 --ip 10.88.0.19 zookeeper
docker run -d --name zk02 -p 2182:2181 --ip 10.88.0.20 zookeeper
docker run -d --name zk03 -p 2183:2181 --ip 10.88.0.21 zookeeper
或者是
docker run -d --name zk01 -p 2181:2181 --ip 10.88.0.19 zookeeper:3.4.10
docker run -d --name zk02 -p 2182:2181 --ip 10.88.0.20 zookeeper:3.4.10
docker run -d --name zk03 -p 2183:2181 --ip 10.88.0.21 zookeeper:3.4.10
可以看到我这里已经有了三个zookeeper容器,注意:宿主机要用不同的端口去映射zookeeper的2181端口,否则从第二个容器开始会启动失败,还有就是ip地址要指定设置成静态,否则后面容器停了之后再次启动ip地址可能会有改变,这样导致集群搭建失败,现在我们看到三个容器已成功启动,状态都是Up.
查看容器IP
如果wangwang
docker inspect -f ‘{{.NetworkSettings.IPAddress}}’ zk01
docker inspect -f ‘{{.NetworkSettings.IPAddress}}’ zk02
docker inspect -f ‘{{.NetworkSettings.IPAddress}}’ zk03
修改容器配置文件
修改容器(10.88.0.19)的zoo.cfg文件
(1)将容器配置文件zoo.cfg复制到宿主机
docker cp zk01:/conf/zoo.cfg ./
(2)编辑zoo.cfg配置文件
vim zoo.cfg
加上以下三行配置
server.1=10.88.0.19:2888:3888;2181
server.2=10.88.0.20:2888:3888;2181
server.3=10.88.0.21:2888:3888;2181
(3)将修改好的zoo.cfg放回容器内
docker cp ./zoo.cfg zk01:/conf
(4)将容器中的myid文件复制到宿主机
docker cp zk01:/data/myid ./
(5)编辑myid文件
vim myid
将编号改为1,当然这个容器的myid就是1,所以这里也不用修改,修改zk02、zk03的就好了
按照同样的方式修改zk02, zk03
重启容器
到这里我们就已经配置好了三台zk服务器,接下来只要将其启动起来即可
docker restart zk01
docker restart zk02
docker restart zk03
查看集群状态
进入容器查看zookeeper启动状态
zk01状态:
[root@localhost ~]# docker exec -it zk01 /bin/bash
root@01851ffefb21:/apache-zookeeper-3.7.0-bin# ./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
root@01851ffefb21:/apache-zookeeper-3.7.0-bin#
zk02状态:
[root@localhost ~]# docker exec -it zk02 /bin/bash
root@6fc2cb97e5fb:/apache-zookeeper-3.7.0-bin# ./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: leader
root@6fc2cb97e5fb:/apache-zookeeper-3.7.0-bin#
zk03状态:
[root@localhost ~]# docker exec -it zk03 /bin/bash
root@13e18e279a7a:/apache-zookeeper-3.7.0-bin# ./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
root@13e18e279a7a:/apache-zookeeper-3.7.0-bin#
查询以上三台容器的zookeeper状态可以看到:zk02为主机,zk01和zk03为从机,到此zookeeper集群搭建完成。
以上内容转载自:
https://blog.csdn.net/u010080562/article/details/120620827
个人复现结果如下:
[root@localhost cenos7]# docker exec -it zk02 /bin/bash
root@f8dd97ac6a28:/apache-zookeeper-3.8.2-bin# ./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
[root@localhost cenos7]# docker exec -it zk03 /bin/bash
root@d744938de2f1:/apache-zookeeper-3.8.2-bin# ./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: leader