本篇我们具体使用Docker-Compose来部署Zookeeper集群环境,这里我们使用Zookeeper官方提供的Docker镜像来搭建集群环境,官方的镜像地址:https://hub.docker.com/_/zookeeper/
下载Zookeeper官方的Docker镜像
|
|
zoo.cfg配置文件
这里我们将部署三台Docker容器组成一个Zookeeper集群,然后我们在本地创建一个zoo.cfg配置文件,指定好Zookeeper集群的配置,zk1,zk2,zk3分别是三台Zookeeper服务器的host名称
|
|
docker-compose.yml配置文件
|
|
这里需要注意几点
- 因为我们是单机部署了多个Docker容器模拟Zookeeper集群的,所以需要做端口映射2181,2888,3888。需要将2888和3888端口也暴露出来,因为如果不暴露出来一旦leader几点挂了,其他follower无法再次进行选举,因为选举是通过3888端口进行的
- 这里我们指定好了Docker容器的IP地址,这样不会动态的去获取IP地址导致每次启动Docker容器IP地址都会变化
- 需要设置/etc/hosts配置文件中的host配置
- 将Docker容器中的/opt/data和/opt/log目录挂在到宿主机的指定目录下
- 设置了一个网卡zoo_net,网段是172.18.0.0,网关是172.18.0.1
- Docker-Compose的version 2版本语法有些变化,如果使用docker-compose version: 1.6以下版本启动可能会遇到Unsupported config option for services service: ‘zoo1’问题,为了支持verion2的语法最好使用最新版本(目前最新版本是1.8.1)。还要注意检查一下networks的配置,否则启动docker-compose up会无法启动
启动Docker-Compose
|
|
验证Zookeeper集群的可用性
|
|
到此为止,我们的使用Zookeeper官方Docker镜像搭建Zookeeper集群已经完成了
参考文章:
- https://docs.docker.com/compose/compose-file/#/network-configuration-reference
- https://docs.docker.com/compose/networking/
- https://hub.docker.com/_/zookeeper/
- https://github.com/31z4/zookeeper-docker/blob/7e7eac6d6c11428849ec13bb7d240e4cfa21b2e7/3.4.9/Dockerfile
- https://github.com/31z4/zookeeper-docker/tree/7e7eac6d6c11428849ec13bb7d240e4cfa21b2e7
- http://blog.csdn.net/cuisongliu/article/details/51817203