目錄
- 1、一臺(tái)主機(jī)上部署zookeeper集群
- 2、一臺(tái)主機(jī)部署zookeeper集群分析
- 3、Macvlan網(wǎng)絡(luò)
- 4、跨主機(jī)環(huán)境準(zhǔn)備
- 5、創(chuàng)建macvlan網(wǎng)絡(luò)
- 6、docker-compose.yml文件
- 總結(jié)
1、一臺(tái)主機(jī)上部署zookeeper集群
下面這個(gè)是官方給出的docker-compose的部署方案(這個(gè)是都在一臺(tái)主機(jī)上部署的):
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、一臺(tái)主機(jī)部署zookeeper集群分析
我們從上面的分析,最主要的就是ZOO_MY_ID和ZOO_SERVERS(更多環(huán)境變量配置參考:https://hub.docker.com/_/zookeeper)
ZOO_MY_ID
:節(jié)點(diǎn)IDZOO_SERVERS
:集群節(jié)點(diǎn)地址,多個(gè)節(jié)點(diǎn)之間使用空格隔開(kāi)
由此可以看出如果不在一個(gè)主機(jī)上,那么這幾個(gè)容器之間就得是想通的,為了使其想通,我們運(yùn)用了Macvlan網(wǎng)絡(luò)
3、Macvlan網(wǎng)絡(luò)
macvlan本身是linxu kernel的模塊,本質(zhì)上是一種網(wǎng)卡虛擬化技術(shù)。
其功能是允許在同一個(gè)物理網(wǎng)卡上虛擬出多個(gè)網(wǎng)卡,通過(guò)不同的MAC地址在數(shù)據(jù)鏈路層進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)的轉(zhuǎn)發(fā),一塊網(wǎng)卡上配置多個(gè) MAC 地址(即多個(gè) interface),每個(gè)interface可以配置自己的IP,Docker的macvlan網(wǎng)絡(luò)實(shí)際上就是使用了Linux提供的macvlan驅(qū)動(dòng).在物理網(wǎng)絡(luò)看來(lái),每張?zhí)摂M網(wǎng)卡都是一個(gè)單獨(dú)的接口。
4、跨主機(jī)環(huán)境準(zhǔn)備
編號(hào) | 主機(jī)IP | 容器IP |
---|---|---|
主機(jī)1 | 192.168.1.187 | 10.0.3.71 |
主機(jī)2 | 192.168.1.188 | 10.0.3.72 |
主機(jī)3 | 192.168.1.189 | 10.0.3.73 |
5、創(chuàng)建macvlan網(wǎng)絡(luò)
主機(jī)1(主機(jī)2和主機(jī)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ù)說(shuō)在設(shè)置了iptable的情況下會(huì)出問(wèn)題parent
后是網(wǎng)卡名稱192.168.1.187的網(wǎng)卡名稱,可通過(guò)ipconfig查找
最后的zookeeper-kafka-net是你創(chuàng)建的macvlan網(wǎng)絡(luò)名稱,可隨意寫
6、docker-compose.yml文件
主機(jī)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
主機(jī)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
主機(jī)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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持。