Docker 部署zookeeper3.4
一、服务器规划
主机 | IP | 端口 |
node-10 | 172.16.10.10 | 2181,2888,3888 |
node-11 | 172.16.10.11 | 2181,2888,3888 |
node-12 | 172.16.10.12 | 2181,2888,3888 |
二、集群部署
注:以下步骤需要分别在三台主机操作
2.1 镜像下载
[root@node-10 ~]# docker pull zookeeper:3.4
官方镜像:https://hub.docker.com/_/zookeeper
2.2 安装部署
## 创建宿主机映射目录
[root@node-10 ~]# mkdir /opt/zookeeper/{conf,data,logs} -p
## 创建配置文件
三台zk节点配置文件一样,直接复制就行
[root@node-10 ~]# vim /opt/zookeeper/conf/zoo.cfg clientPort=2181 dataDir=/data #数据存储 dataLogDir=/datalog #日志 tickTime=2000 initLimit=5 syncLimit=2 autopurge.snapRetainCount=3 autopurge.purgeInterval=0 maxClientCnxns=60 server.1=172.16.10.10:2888:3888 server.2=172.16.10.11:2888:3888 server.3=172.16.10.12:2888:3888
参数解释:
2181:对cline端提供服务
3888:选举leader使用
2888:集群内机器通讯使用(Leader监听此端口)
server.1: 1为一个数字,表示zk的id,这个id也是dataDir目录下myid文件的内容。
## 配置zookeeper主机id,每个机器id不能相同,需要对应配置文件中server后面的值
[root@node-10 ~]# echo "1" > /opt/zookeeper/data/myid [root@node-11 ~]# echo "2" > /opt/zookeeper/data/myid [root@node-12 ~]# echo "3" > /opt/zookeeper/data/myid
2.3 启动
[root@node-10 ~]# docker run --network host --restart=always \ -v /opt/zookeeper/data:/data \ -v /opt/zookeeper/conf:/conf \ -v /opt/zookeeper/logs:/datalog \ --name zookeeper -d zookeeper:3.4
参数解释:
/opt/zookeeper/data:/data #数据目录
/opt/zookeeper/conf:/conf #配置文件
/opt/zookeeper/logs:/datalog #日志目录
注:容器网络采用的是host模式,因此不需要再进行端口映射,三台机器上zk部署,基本类似,只有myid每个机器需要有唯一值
2.4 检查集群状态
[root@node-10 ~]# docker exec -it zookeeper /bin/bash root@node-10:/zookeeper-3.4.14# cd bin/ root@node-10:/zookeeper-3.4.14/bin# zkServer.sh status ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Mode: follower
可以看到该节点为从节点,通过查看其它节点,可以看到11服务器为leader节点
[root@node-11 ~]# docker exec -it zookeeper /bin/bash root@node-11:/zookeeper-3.4.14# cd bin root@node-11:/zookeeper-3.4.14/bin# zkServer.sh status ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Mode: leader
以上为docker部署zookeeper集群的过程,关于配置参数,需要根据自己的业务需求灵活调整。