docker搭建zookeeper集群(伪集群)

《docker版dubbo-admin》

前言:以下说的都是同一台机器上部署多个容器(伪集群)方式;
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版权协议,转载请附上原文出处链接和本声明。