一、服務器規划
主機 | 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集群的過程,關於配置參數,需要根據自己的業務需求靈活調整。