目录
前言:以下说的都是同一台机器上部署多个容器(伪集群)方式;
docker版集群难点在于如何实现容器之间的相互通信。由于在同一台机器上刚好有便捷方式处理,实际生产上,请自行研究下–link或–network的用法
一.准备工作
01.下载zookeeper镜像
docker pull docker.io/zookeeper:3.6.3
02.宿主机-创建映射目录
我这边打算把容器上的conf、data目录映射出来到宿主机来,以方便后续操作。
我在宿主机的建了如下几个目录
03.创建容器
容器:zookeeper_2181
docker run -id \
-v /LM/docker-zookeeper-cluster/conf:/conf \
-v /LM/docker-zookeeper-cluster/data1:/data \
-p 2181:2181 \
--name=zookeeper_2181 \
zookeeper:3.6.3
容器:zookeeper_2182
docker run -id \
-v /LM/docker-zookeeper-cluster/conf:/conf \
-v /LM/docker-zookeeper-cluster/data2:/data \
-p 2182:2181 \
--name=zookeeper_2182 \
zookeeper:3.6.3
容器:zookeeper_2183
docker run -id \
-v /LM/docker-zookeeper-cluster/conf:/conf \
-v /LM/docker-zookeeper-cluster/data3:/data \
-p 2183:2181 \
--name=zookeeper_2183 \
zookeeper:3.6.3
此时用docker ps 先检查下容器是否启动成功
04.查看容器的ip(核心)
docker inspect 容器名|grep IPAddress
此处查到的ip能用于容器间互通使用,比如我查到的为:
zookeeper_2181: 172.17.0.3
zookeeper_2182: 172.17.0.5
zookeeper_2183: 172.17.0.6
二.开始配置
01.修改conf/zoo.cfg
进入宿主机上映射的conf目录,修改zoo.cfg文件,在最后加上以下三行配置
server.1=172.17.0.3:2888:3888;2181
server.2=172.17.0.5:2888:3888;2181
server.3=172.17.0.6:2888:3888;2181
02.修改data/myid
进入宿主机的data1目录,修改myid文件里的内容为1;
进入宿主机的data2目录,修改myid文件里的内容为2;
进入宿主机的data3目录,修改myid文件里的内容为3;
myid里的内容,即为上一步zoo.cfg里所加的server.id值
03.重启容器,检测状态
a.重启3个容器
docker restart 容器名
重启后用docker ps 先检查下容器是否启动成功
b.进入容器内部检查zookeeper状态
docker exec -it 容器名 bash
三.去代码里试试
比如,3个zookeeper容器,关掉1台后,因为【正常机器数>=机器总数X50%】,故集群应当保持正常,此时代码应当能够正常调用zookeeper
版权声明:本文为weixin_44647371原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。