天天看點

Docker之學習安裝zookeeper 3.5.8 叢集

環境:

docker :

從https://hub.docker.com/官網擷取zookeeper版本

一、拉取鏡像

docker pull zookeeper:3.5.8
           

二、docker容器之間的通信

Docker有三種網絡模式,bridge、host、none,在你建立容器的時候,不指定--network預設是bridge。

bridge:為每一個容器配置設定IP,并将容器連接配接到一個docker0虛拟網橋,通過docker0網橋與主控端通信。也就是說,此模式下,你不能用主控端的IP+容器映射端口來進行Docker容器之間的通信。

host:容器不會虛拟自己的網卡,配置自己的IP,而是使用主控端的IP和端口。這樣一來,Docker容器之間的通信就可以用主控端的IP+容器映射端口

none:無網絡。

1.檢視網絡

docker network ls
           

2.建立zookeeper的bridge網絡,然後建立容器的時候指定ip。

docker network create --driver bridge --subnet=172.19.0.0/16 --gateway=172.19.0.1 zknetwork
           

3.檢視網絡

docker network ls
           
Docker之學習安裝zookeeper 3.5.8 叢集

4.檢視網絡配置

docker network inspect ef622b1b8e37
           
Docker之學習安裝zookeeper 3.5.8 叢集

三、建立本地目錄:

 1. 建立叢集目錄

mkdir zookeeper-cluster
           

 2.在zookeeper-cluster目錄下建立:

mkdir node1
mkdir node2
mkdir node3
           

四、zookeeper叢集容器的建立指令

docker run -d -p 2181:2181 --name zookeeper_node1 --privileged --restart always --network zknetwork --ip 172.19.0.2 \
-v /home/docker/zookeeper/zookeeper-cluster/node1/volumes/data:/data \
-v /home/docker/zookeeper/zookeeper-cluster/node1/volumes/datalog:/datalog \
-v /home/docker/zookeeper/zookeeper-cluster/node1/volumes/logs:/logs \
-e ZOO_MY_ID=1 \
-e "ZOO_SERVERS=server.1=172.19.0.2:2888:3888;2181 server.2=172.19.0.3:2888:3888;2181 server.3=172.19.0.4:2888:3888;2181" zookeeper:3.5.8

docker run -d -p 2182:2181 --name zookeeper_node2 --privileged --restart always --network zknetwork --ip 172.19.0.3 \
-v /home/docker/zookeeper/zookeeper-cluster/node2/volumes/data:/data \
-v /home/docker/zookeeper/zookeeper-cluster/node2/volumes/datalog:/datalog \
-v /home/docker/zookeeper/zookeeper-cluster/node2/volumes/logs:/logs \
-e ZOO_MY_ID=2 \
-e "ZOO_SERVERS=server.1=172.19.0.2:2888:3888;2181 server.2=172.19.0.3:2888:3888;2181 server.3=172.19.0.4:2888:3888;2181" zookeeper:3.5.8

docker run -d -p 2183:2181 --name zookeeper_node3 --privileged --restart always --network zknetwork --ip 172.19.0.4 \
-v /home/docker/zookeeper/zookeeper-cluster/node3/volumes/data:/data \
-v /home/docker/zookeeper/zookeeper-cluster/node3/volumes/datalog:/datalog \
-v /home/docker/zookeeper/zookeeper-cluster/node3/volumes/logs:/logs \
-e ZOO_MY_ID=3 \
-e "ZOO_SERVERS=server.1=172.19.0.2:2888:3888;2181 server.2=172.19.0.3:2888:3888;2181 server.3=172.19.0.4:2888:3888;2181" zookeeper:3.5.8
           

五、參數解析

  1. 3.5.x開始,clientPort和clientPortAddress配置參數是server關鍵字規範的一部分。

  2. --privileged=true參數是為了解決【chown: changing ownership of '/data': Permission denied】,也可以省略true。

  3. 由于是在同一台伺服器上安裝zookeeper叢集,則端口映射三個容器不一樣,端口不能沖突,端口設定2181/2182/2183。

 4.   --restart=always     這個表示docker容器在停止或伺服器開機之後會自動重新啟動

六、驗證zookeeper叢集容器

 1.zookeeper_node1

  a.進入zookeeper_node1

docker exec -it zookeeper_node1 bash
           

  b.檢視狀态資訊

./bin/zkServer.sh status
           
Docker之學習安裝zookeeper 3.5.8 叢集

  c.退出zookeeper_node1

exit
           
Docker之學習安裝zookeeper 3.5.8 叢集

 2.zookeeper_node2

   a.進入zookeeper_node2

docker exec -it zookeeper_node2 bash
           

   b.檢視狀态資訊

./bin/zkServer.sh status
           
Docker之學習安裝zookeeper 3.5.8 叢集

  c.退出zookeeper_node2

exit
           
Docker之學習安裝zookeeper 3.5.8 叢集

3.zookeeper_node3

   a.進入zookeeper_node3

docker exec -it zookeeper_node3 bash
           

  b.檢視狀态資訊

./bin/zkServer.sh status
           
Docker之學習安裝zookeeper 3.5.8 叢集

   c.退出zookeeper_node3

exit
           
Docker之學習安裝zookeeper 3.5.8 叢集