用于Docker Compose部署ZooKeeper集群的yaml檔案:
version: '3'
networks:
zookeeper-networks:
driver: bridge
services:
zookeeper1:
image: zookeeper
container_name: zookeeper1
restart: always
ports:
- 9001:2181
volumes:
- "/usr/local/docker-compose/zookeeper/zookeeper1/data:/data"
- "/usr/local/docker-compose/zookeeper/zookeeper1/datalog:/datalog"
- "/usr/local/docker-compose/zookeeper/zookeeper1/logs:/logs"
- "/usr/local/docker-compose/zookeeper/zookeeper1/conf:/conf"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888
networks:
- zookeeper-networks
zookeeper2:
image: zookeeper
container_name: zookeeper2
restart: always
ports:
- 9002:2181
volumes:
- "/usr/local/docker-compose/zookeeper/zookeeper2/data:/data"
- "/usr/local/docker-compose/zookeeper/zookeeper2/datalog:/datalog"
- "/usr/local/docker-compose/zookeeper/zookeeper2/logs:/logs"
- "/usr/local/docker-compose/zookeeper/zookeeper2/conf:/conf"
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888
networks:
- zookeeper-networks
zookeeper3:
image: zookeeper
container_name: zookeeper3
restart: always
ports:
- 9003:2181
volumes:
- "/usr/local/docker-compose/zookeeper/zookeeper3/data:/data"
- "/usr/local/docker-compose/zookeeper/zookeeper3/datalog:/datalog"
- "/usr/local/docker-compose/zookeeper/zookeeper3/logs:/logs"
- "/usr/local/docker-compose/zookeeper/zookeeper3/conf:/conf"
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888
networks:
- zookeeper-networks
創建用于存放組態檔的目錄:
mkdir -p /usr/local/docker-compose/zookeeper/zookeeper1/conf /usr/local/docker-compose/zookeeper/zookeeper2/conf /usr/local/docker-compose/zookeeper/zookeeper3/con
創建組態檔:
vim /usr/local/docker-compose/zookeeper/zookeeper1/conf/zoo.cfg
組態檔的內容如下所示:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data
dataLogDir=/datalog
clientPort=2181
# 擴展型別啟用,設定為true才能創建TTL型別的節點
extendedTypesEnabled=true
# 集群配置
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
tickTime:ZooKeeper中最小的時間單位長度 (默認2000ms),initLimit:follower節點啟動后與leader節點完成資料同步的時間(指定為tickTime的倍數,默認10倍,即20s),syncLimit:leader節點和follower節點進行心跳檢測的最大延遲時間(指定為tickTime的倍數,默認5倍,即10s),dataDir:表示ZooKeeper存盤快照檔案的目錄(默認為/tmp/zookeeper),dataLogDir:表示ZooKeeper事務日志的存盤路徑,默認指定在dataDir目錄下 ,clientPort:表示ZooKeeper客戶端和ZooKeeper服務端建立連接的埠號(默認2181),

將組態檔復制到其他ZooKeeper節點掛載的組態檔目錄:
cp /usr/local/docker-compose/zookeeper/zookeeper1/conf/zoo.cfg /usr/local/docker-compose/zookeeper/zookeeper2/conf/
cp /usr/local/docker-compose/zookeeper/zookeeper1/conf/zoo.cfg /usr/local/docker-compose/zookeeper/zookeeper3/conf/
開始部署ZooKeeper集群:
docker compose -f /root/composefile/zookeeper/zookeeper.yaml up -d
-f指定yaml檔案位置,-d表示后臺運行,

docker ps和docker compose ls命令都可以查詢服務是否啟動成功:

Docker部署在192.168.1.9上,

使用另外一臺有ZooKeeper檔案的虛擬機進行測驗,
./zkCli.sh -timeout 5000 -server 192.168.1.9:9001

測驗創建TTL型別的節點,
[zk: 192.168.1.9:9001(CONNECTED) 1] ls /
[zookeeper]
[zk: 192.168.1.9:9001(CONNECTED) 2] create -t 10 /kaven
Created /kaven
[zk: 192.168.1.9:9001(CONNECTED) 3] ls /
[kaven, zookeeper]
[zk: 192.168.1.9:9001(CONNECTED) 4] ls /
[kaven, zookeeper]
[zk: 192.168.1.9:9001(CONNECTED) 5] ls /
[kaven, zookeeper]
[zk: 192.168.1.9:9001(CONNECTED) 6] ls /
[kaven, zookeeper]
[zk: 192.168.1.9:9001(CONNECTED) 7] ls /
[kaven, zookeeper]
[zk: 192.168.1.9:9001(CONNECTED) 8] ls /
[zookeeper]
使用Docker Compose部署ZooKeeper集群就介紹到這里,如果博主有說錯的地方或者大家有不同的見解,歡迎大家評論補充,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423754.html
標籤:其他
上一篇:Kafka:Producer自定義Partition負載均衡
下一篇:Kafka流程梳理
