二、docker搭建zookeeper集群

zookeeper搭建集群有兩點注意:

1、data目錄下myid文件中的數(shù)字不能重復(fù)(data文件路徑可以在zoo.cnf中自己指定)
2、在zoo.cnf中要指定所有的zookeeper的ip和端口

docker搭建zk集群:

(ps:本文使用文件拷貝的方式來配置zk的集群,應(yīng)該不是最佳的解決方案,dockerHub提供一種方式啟動,但是一個zk節(jié)點掛點其他也會掛掉,故暫時使用以下方式配置)

一、下載docker
略。。。
二、下載zk鏡像

docker pull registry.docker-cn.com/library/zookeeper

三、創(chuàng)建自定義的bridge,這一步必須的,否側(cè)集群中通信只能通過ip比較麻煩,注冊到同一個bridge容器間可以通過容器名進行通信

docker network create -d bridge my-net

四、啟動三個zk容器

docker run -d --name zookeeper01 -p 22181:2181 --network=my-net  registry.docker-cn.com/library/zookeeper
docker run -d --name zookeeper02 -p 22182:2181 --network=my-net  registry.docker-cn.com/library/zookeeper
docker run -d --name zookeeper03 -p 22183:2181 --network=my-net  registry.docker-cn.com/library/zookeeper

(ps: -p后第一個端口為映射的本地端口可以隨便起,但是不能重復(fù))
隨便找一個zk容器,拷貝出其中一個zoo.cfg

docker cp 容器id:conf/zoo.cfg zoo.cfg

用vim打開拷貝出來的zoo.cfg,并在末尾增加集群配置:

server.1=zookeeper01:2881:3881
server.2=zookeeper02:2881:3881
server.3=zookeeper03:2881:3881

因為注冊到同一個bridge所以可以用容器名字進行通信
···
docker cp 第一個容器id:conf/zoo.cfg zoo.cfg
docker cp 第二個容器id:conf/zoo.cfg zoo.cfg
docker cp 第三個容器id:conf/zoo.cfg zoo.cfg
···
修改完zoo.cfg后我們還要修改容器data/myid,在集群中的id
因為容器中的myid默認都是1,故我們直接修改第二個和第三個

echo 2 >myid

將myid拷貝到第二個容器

docker cp myid:第二個容器id:/data/myid

修改myid為3
vim myid 自己改成三然后拷貝到第三個容器
最后重啟三個zk容器

docker restart 第一個容器id
docker restart 第一個容器id
docker restart 第一個容器id

測試:
進入鏡像查看狀態(tài)

docker exec -it 容器id /bin/sh
bin/zkServer.sh status
image.png

image.png

image.png

一個leader兩個follower
完畢?。。?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容