docker部署zookeeper集群方式(單主機、多主機)
1、一臺主機上部署zookeeper集群
下面這個是官方給出的docker-compose的部署方案(這個是都在一臺主機上部署的):
version: '3'
services:
zoo1:
image: zookeeper
restart: always
ports:
- 2182:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo2:
image: zookeeper
restart: always
ports:
- 2183:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo3:
image: zookeeper
restart: always
ports:
- 2184:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
2、一臺主機部署zookeeper集群分析
我們從上面的分析,最主要的就是ZOO_MY_ID和ZOO_SERVERS(更多環(huán)境變量配置參考:https://hub.docker.com/_/zookeeper)
ZOO_MY_ID:節(jié)點IDZOO_SERVERS:集群節(jié)點地址,多個節(jié)點之間使用空格隔開
由此可以看出如果不在一個主機上,那么這幾個容器之間就得是想通的,為了使其想通,我們運用了Macvlan網(wǎng)絡(luò)
3、Macvlan網(wǎng)絡(luò)
macvlan本身是linxu kernel的模塊,本質(zhì)上是一種網(wǎng)卡虛擬化技術(shù)。
其功能是允許在同一個物理網(wǎng)卡上虛擬出多個網(wǎng)卡,通過不同的MAC地址在數(shù)據(jù)鏈路層進行網(wǎng)絡(luò)數(shù)據(jù)的轉(zhuǎn)發(fā),一塊網(wǎng)卡上配置多個 MAC 地址(即多個 interface),每個interface可以配置自己的IP,Docker的macvlan網(wǎng)絡(luò)實際上就是使用了Linux提供的macvlan驅(qū)動.在物理網(wǎng)絡(luò)看來,每張?zhí)摂M網(wǎng)卡都是一個單獨的接口。
4、跨主機環(huán)境準備
| 編號 | 主機IP | 容器IP |
|---|---|---|
| 主機1 | 192.168.1.187 | 10.0.3.71 |
| 主機2 | 192.168.1.188 | 10.0.3.72 |
| 主機3 | 192.168.1.189 | 10.0.3.73 |
5、創(chuàng)建macvlan網(wǎng)絡(luò)
主機1(主機2和主機3也做如下類似操作):
docker network create -d macvlan --subnet=10.0.3.0/24 --gateway=10.0.3.1 -o parent=em2 zookeeper-kafka-net
subnet這里結(jié)尾最好是/24,代表255.255.255.0,如果是/16代表255.255.0.0,16這種據(jù)說在設(shè)置了iptable的情況下會出問題parent后是網(wǎng)卡名稱192.168.1.187的網(wǎng)卡名稱,可通過ipconfig查找

最后的zookeeper-kafka-net是你創(chuàng)建的macvlan網(wǎng)絡(luò)名稱,可隨意寫
6、docker-compose.yml文件
主機1:
version: "3" services: ? zookeeper1: ? ? container_name: zookeeper1 ? ? image: zookeeper:3.6.2 ? ? networks: ? ? ? zookeeper-kafka-net: ? ? ? ? ipv4_address: 10.0.3.71 ? ? ports: ? ? ? - "22181:2181" ? ? ? - "22888:2888" ? ? ? - "23888:3888" ? ? environment: ? ? ? ZOO_MY_ID: 1 ? ? ? ZOO_SERVERS: server.1=10.0.3.71:2888:3888;2181 server.2=10.0.3.72:2888:3888;2181 server.3=10.0.3.73:2888:3888;2181 ? ? restart: always networks: ? zookeeper-kafka-net: ? ? external: ? ? ? name: zookeeper-kafka-net
主機2:
version: "3" services: ? zookeeper2: ? ? container_name: zookeeper2 ? ? image: zookeeper:3.6.2 ? ? networks: ? ? ? zookeeper-kafka-net: ? ? ? ? ipv4_address: 10.0.3.72 ? ? ports: ? ? ? - "22181:2181" ? ? ? - "22888:2888" ? ? ? - "23888:3888" ? ? environment: ? ? ? ZOO_MY_ID: 2 ? ? ? ZOO_SERVERS: server.1=10.0.3.71:2888:3888;2181 server.2=10.0.3.72:2888:3888;2181 server.3=10.0.3.73:2888:3888;2181 ? ? restart: always networks: ? zookeeper-kafka-net: ? ? external: ? ? ? name: zookeeper-kafka-net
主機3:
version: "3" services: ? zookeeper3: ? ? container_name: zookeeper3 ? ? image: zookeeper:3.6.2 ? ? networks: ? ? ? zookeeper-kafka-net: ? ? ? ? ipv4_address: 10.0.3.73 ? ? ports: ? ? ? - "22181:2181" ? ? ? - "22888:2888" ? ? ? - "23888:3888" ? ? environment: ? ? ? ZOO_MY_ID: 3 ? ? ? ZOO_SERVERS: server.1=10.0.3.71:2888:3888;2181 server.2=10.0.3.72:2888:3888;2181 server.3=10.0.3.73:2888:3888;2181 ? ? restart: always networks: ? zookeeper-kafka-net: ? ? external: ? ? ? name: zookeeper-kafka-net
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker安裝jenkins的過程并配置jdk、node和maven
本文介紹了如何從拉取Jenkins鏡像開始,通過創(chuàng)建文件夾、準備JDK、Maven和Node環(huán)境,修改settings.xml支持http協(xié)議,到建立Dockerfile進行Jenkins鏡像的二次打包,同時涉及容器的運行、Jenkins初始化設(shè)置、插件安裝和環(huán)境變量配置等步驟,幫助用戶成功部署并運行Jenkins服務(wù)2024-10-10
使用Docker和Nginx部署Web服務(wù)的操作指南
本文給大家介紹了Docker和Nginx部署Web服務(wù)的完美指南,Docker是一種容器化技術(shù),它可以將應(yīng)用程序及其依賴項打包到一個獨立的、可移植的容器中,而Nginx則是一款高性能的Web服務(wù)器和反向代理服務(wù)器,感興趣的朋友可以參考下2024-01-01
docker之MySQL同步數(shù)據(jù)的實現(xiàn)
本文主要介紹了docker之MySQL同步數(shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Ubuntu15.10安裝docker和docker-compose教程
這篇文章主要介紹了Ubuntu15.10安裝docker和docker-compose的教程,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03
docker內(nèi)服務(wù)訪問宿主機服務(wù)的實現(xiàn)
本文主要介紹了docker內(nèi)服務(wù)訪問宿主機服務(wù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
Docker安裝運行apache2服務(wù)器做圖片服務(wù)器的方法
這篇文章主要介紹了Docker安裝運行apache2服務(wù)器做圖片服務(wù)器的方法,需要的朋友可以參考下2017-06-06
詳解Docker 配置國內(nèi)免費registry mirror
本篇文章主要介紹了 Docker 配置國內(nèi)免費registry mirror,具有一定的參考價值,有興趣的小伙伴們可以參考一下2017-07-07
如何在Docker容器內(nèi)外互相拷貝數(shù)據(jù)
本篇文章主要介紹了如何在Docker容器內(nèi)外互相拷貝數(shù)據(jù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12
教你如何將應(yīng)用從docker-compose遷移到k8s中
這篇文章主要介紹了如何將應(yīng)用從docker-compose遷移到k8s中,本文給大家分享一個專門的遷移工具,可方便地通過docker-compose.yaml自動生成k8s的yaml部署文件,本文給大家介紹的非常詳細,需要的朋友可以參考下2022-07-07

