一、在本地電腦上安裝Docker 1.安裝Docker (安裝最新的Docker版本) yum install docker-ce docker-ce-cli containerd.io docker-bulidx-plugin docker-compose-plugin 2.查看Docker版本 ...
一、在本地電腦上安裝Docker
1.安裝Docker (安裝最新的Docker版本)
yum install docker-ce docker-ce-cli containerd.io docker-bulidx-plugin docker-compose-plugin
2.查看Docker版本並啟動Docker
docker version
安裝成功的Docker版本為24.0.6
systemctl start docker
Docker 成功啟動
二、在Docker中構建映像(image),安裝Zookeeper
1.拉取zookeeper鏡像 (選擇安裝版本為3.8.2)
docker pull zookeeper:3.8.2
2.查看Docker鏡像
docker images
已成功拉取zookeeper:3.8.2 鏡像
三、構建區域網環境
採用bridge 方式
docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 zoonet
四、使用 docker-compose 創建zookeeper集群
1.查看docker - compose (在安裝docker時已安裝docker-compose-plugin)
docker-compose --version
2.編寫zoo.yml文件
3.在zoo.yml同一級目錄下執行docker-compose命令
docker-compose -f zoo.yml up -d
4.查看運行的容器
docker ps
可以看到zoo1 zoo2 zoo3 三個容器實例正在運行
其容器id 分別為6635ecc75b61 b8a740a705e2 a447136876a9
5.驗證zoo1 zoo2 zoo3是否構成一個集群。進入zookeeper容器查看主從節點
1)進入 zoo1
docker exec -it b8a740a705e2 /bin/bash
zoo1 為follower
2)進入zoo2
docker exec -it 6635ecc75b61 /bin/bash
zoo2為follower
3)進入zoo3
docker exec -it a447136876a9 /bin/bash
zoo3為leader
可以知道zoo1 zoo2 zoo3 通過選舉產生得到leader zoo3
follower zoo1 follower zoo2
五、在leader上進行配置修改,觀測follower上相應配置的同步情況
1.進入zoo3 啟動zkCli.sh 併進行修改
docker exec -it a447136876a9 /bin/bash
./bin/zkCli.sh
ls /
查看
create /hi
2.進入follower zoo2 並啟動 zkCli 後查看
出現leader 寫入的hi
3.進入follower zoo1 並啟動 zkCli 後查看
同樣出現leader 寫入的hi
六、安裝過程中出現的問題
1.構建區域網時報錯
在使用命令docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 zoonet 出現報錯
在查看docker network ls 和docker network inspect後發現因為我之前使用Docker創建了一個network ,它預設是bridge 與我創建的network有衝突。在刪除它後問題得到瞭解決。
2.zookeeper版本問題
使用命令docker run 運行容器時需要指定鏡像版本,否則預設會使用最新的版本創建並運行。後面停止並刪除之前的zookeeper,指定zookeeper版本後解決問題。
3.zookeeper集群無法通訊的問題
在配置文件zoo.yml 後,使用docker-compose啟動,發現各個節點無法通信。因為在yml文件中未指定ipv4的ip地址 ,重新編寫yml文件加入networks配置解決問題。