docker部署zookeeper集群

<code>本文由“開發者手冊”原創,如需轉載,拿走不謝!/<code>

前提概要

“ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個為分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。

如果您還沒有安裝docker,請參考我的另一篇文章:

如果你想用安裝包的方式部署,請參考我的另一篇文章:

系統環境介紹

<code>centos7.5參數如下:

命令:uname -a
輸出:Linux server160131 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

命令:rpm -q centos-release
輸出:centos-release-7-5.1804.el7.centos.x86_64

需要centos7.5精簡版安裝包的同學可以評論或者私信我,私信關鍵字”centos“會自動回覆您下載地址。/<code>

演示服務器介紹

<code>服務器名稱:server160132

服務器IP:192.168.160.132

說明:為了演示方便,我這邊使用一臺物理節點部署zookeeper集群,實際使用中要做到高可用需要分別部署到不同的物理節點上。

zookeeper集群:zk-node1、zk-node2、zk-node3/<code>

docker版本介紹

<code>命令:docker -v

輸出:
Docker version 17.03.0-ce, build 3a232c8/<code>

JDK版本介紹

<code>JDK版本為:1.8.0_72

JDK路徑為:/opt/jdk/jdk1.8.0_72

需要jdk安裝包的同學可以評論或者私信我,私信關鍵字”jdk“會自動回覆您下載地址。/<code>

如果您還沒有安裝JDK,請參考我的另一篇文章:


zookeeper版本介紹

<code>zookeeper的官方鏡像版本為:zookeeper:3.4.9

獲取方式一、可以通過docker命令拉取
命令:docker pull zookeeper:3.4.9

獲取方式二、導入我提供的鏡像文件
命令:gunzip -c zookeeper_3.4.9.tar.gz | docker load
說明:需要打包好的zookeeper_3.4.9.tar.gz鏡像文件可以關注+留言/私信獲取。/<code>

安裝步驟

1、先創建存放數據的目錄

<code># 創建zk-node1節點的conf(配置文件)文件夾
命令:mkdir -p /opt/docker/zookeeper/zk-node1/conf
# 創建zk-node1節點的data(數據)文件夾
命令:mkdir -p /opt/docker/zookeeper/zk-node1/data
# 創建zk-node1節點的log(日誌)文件夾
命令:mkdir -p /opt/docker/zookeeper/zk-node1/log

# 創建zk-node2節點的conf(配置文件)文件夾
命令:mkdir -p /opt/docker/zookeeper/zk-node2/conf
# 創建zk-node2節點的data(數據)文件夾
命令:mkdir -p /opt/docker/zookeeper/zk-node2/data
# 創建zk-node2節點的log(日誌)文件夾
命令:mkdir -p /opt/docker/zookeeper/zk-node2/log

# 創建zk-node3節點的conf(配置文件)文件夾
命令:mkdir -p /opt/docker/zookeeper/zk-node3/conf
# 創建zk-node3節點的data(數據)文件夾
命令:mkdir -p /opt/docker/zookeeper/zk-node3/data
# 創建zk-node3節點的log(日誌)文件夾
命令:mkdir -p /opt/docker/zookeeper/zk-node3/log

最後設置文件夾權限:
命令:chmod -R 777 /opt/docker/zookeeper/<code>

2、啟動腳本

<code>docker run -d \\
--name=zk-node1 \\
--restart=always \\
-p 2191:2181 \\
-p 2891:2888 \\
-p 3891:3888 \\
-e ZOO_MY_ID=1 \\
-e ZOO_SERVERS="server.1=zk-node1:2888:3888 server.2=zk-node2:2892:3892 server.3=zk-node3:2893:3893" \\
-v /opt/docker/zookeeper/zk-node1/data:/data \\
-v /opt/docker/zookeeper/zk-node1/log:/datalog \\
-v /opt/docker/zookeeper/zk-node1/conf:/conf \\
--add-host "zk-node1:0.0.0.0" \\
--add-host "zk-node2:192.168.160.132" \\
--add-host "zk-node3:192.168.160.132" \\
zookeeper:3.4.9
docker logs -f zk-node1
/<code>
<code># 啟動zk-node2節點
docker run -d \\
--name=zk-node2 \\
--restart=always \\
-p 2192:2181 \\
-p 2892:2888 \\
-p 3892:3888 \\
-e ZOO_MY_ID=2 \\
-e ZOO_SERVERS="server.1=zk-node1:2891:3891 server.2=zk-node2:2888:3888 server.3=zk-node3:2893:3893" \\
-v /opt/docker/zookeeper/zk-node2/data:/data \\
-v /opt/docker/zookeeper/zk-node2/log:/datalog \\
-v /opt/docker/zookeeper/zk-node2/conf:/conf \\
--add-host "zk-node1:192.168.160.132" \\
--add-host "zk-node2:0.0.0.0" \\
--add-host "zk-node3:192.168.160.132" \\
zookeeper:3.4.9
docker logs -f zk-node2/<code>
<code># 啟動zk-node3節點
docker run -d \\
--name=zk-node3 \\
--restart=always \\
-p 2193:2181 \\
-p 2893:2888 \\
-p 3893:3888 \\
-e ZOO_MY_ID=3 \\
-e ZOO_SERVERS="server.1=zk-node1:2891:3891 server.2=zk-node2:2892:3892 server.3=zk-node3:2888:3888" \\
-v /opt/docker/zookeeper/zk-node3/data:/data \\

-v /opt/docker/zookeeper/zk-node3/log:/datalog \\
-v /opt/docker/zookeeper/zk-node3/conf:/conf \\
--add-host "zk-node1:192.168.160.132" \\
--add-host "zk-node2:192.168.160.132" \\
--add-host "zk-node3:0.0.0.0" \\
zookeeper:3.4.9
docker logs -f zk-node3/<code>

3、驗證集群是否部署成功

<code>查看容器啟動狀態

命令:docker ps -a | grep zk
輸出:
25be3a53ebf2 zookeeper:3.4.9 "/docker-entrypoin..." 4 minutes ago Up 4 minutes 0.0.0.0:2193->2181/tcp, 0.0.0.0:2893->2888/tcp, 0.0.0.0:3893->3888/tcp zk-node3
79efba9adf97 zookeeper:3.4.9 "/docker-entrypoin..." 4 minutes ago Up 4 minutes 0.0.0.0:2192->2181/tcp, 0.0.0.0:2892->2888/tcp, 0.0.0.0:3892->3888/tcp zk-node2
b5d6309eee03 zookeeper:3.4.9 "/docker-entrypoin..." 4 minutes ago Up 4 minutes 0.0.0.0:2191->2181/tcp, 0.0.0.0:2891->2888/tcp, 0.0.0.0:3891->3888/tcp zk-node1/<code>

4、查看集群狀態

<code>命令:docker exec -it zk-node1 bash -c "zkServer.sh status"
輸出:
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower/<code>
<code>命令:docker exec -it zk-node2 bash -c "zkServer.sh status"
輸出:
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: leader/<code>
<code>命令:docker exec -it zk-node3 bash -c "zkServer.sh status"
輸出:
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower/<code>

5、本zookeeper集群對外提供的地址列表

<code>zk-node1:192.168.160.132:2191:2891:3891
zk-node2:192.168.160.132:2192:2892:3893
zk-node3:192.168.160.132:2193:2893:3893/<code>

結束語

希望我的文章能給您帶來幫助,如果您有什麼疑問,可以給我留言,我會在第一時間給你提供解答。如果您有好的建議或想法,也歡迎給我留言。

docker部署zookeeper集群


分享到:


相關文章: