Docker應用系列(二)| 構建Zookeeper集群


本示例基於Centos 7,在阿里雲的三台機器上部署zookeeper集群,假設目前使用的賬號為release,擁有sudo權限。

由於Docker官方鏡像下載較慢,可以開啟阿里雲的Docker鏡像下載加速器,可參考此文進行配置。

假設三台主機的ip分別為:

  • 主機一:192.168.0.1
  • 主機二:192.168.0.2
  • 主機三:192.168.0.3

三台主機的安裝步驟相似,以主機一為例:

1. 安裝docker服務:

 sudo yum install -y docker

 

2. 啟動docker服務: 

sudo service docker start

 

3. 查找zookeeper鏡像:

sudo docker search zookeeper

 

4. 下載官方redis鏡像:

sudo  docker pull docker.io/zookeeper

 

5. 下載完后可檢查鏡像:

sudo docker images 

 

6. 主機上建立掛載目錄和zookeeper配置文件:

mkdir -p /data/zookeeper_data/conf
mkdir -p /data/zookeeper_data/data cd /data/zookeeper_data/conf touch zoo.cfg vi zoo.cfg

三台主機上的zoo.cfg配置信息如下:

clientPort=2181
dataDir=/data
dataLogDir=/data/log
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.0=192.168.0.1:2888:3888
server.1=192.168.0.2:2888:3888
server.2=192.168.0.3:2888:3888

在主機一上為自己分配server id,命令如下:

cd /data/zookeeper_data/data
touch myid
echo 0 > myid

在主機二上為自己分配server id,命令如下:

cd /data/zookeeper_data/data
touch myid
echo 1 > myid

在主機二上為自己分配server id,命令如下:

cd /data/zookeeper_data/data
touch myid
echo 2 > myid

 

7. 三台主機依次啟動容器:

sudo docker run  --network host -v /data/zookeeper_data/data:/data -v /data/zookeeper_data/conf:/conf --name zk-2181 -d docker.io/zookeeper

命令說明:

  • --network host: 使用主機上的網絡配置,如果不用這種模式,而用默認的bridge模式,會導致容器跨主機間通信失敗
  • -v /data/zookeeper_data/data:/data:主機的數據目錄掛載到容器/data下
  • -v /data/zookeeper_data/conf:/conf: 主機的配置目錄掛載到容器的/conf下,容器內的zkServer.sh默認會讀取/conf/zoo.cfg下的配置

都啟動完成后,每台主機的2181/2888/3888端口都會開放出來了

 

8. 檢查容器的啟動情況:

sudo docker exec -it 容器id /bin/bash

進入容器內部后,其工作目錄為:/zookeeper-3.4.13(版本依據鏡像而定),執行zookeeper檢查:

[release@sh-lbs02 data]$ sudo docker exec -it 456 /bin/bash
[sudo] password for release: 
bash-4.4# pwd
/zookeeper-3.4.13
bash-4.4# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower
bash-4.4# 

可以看到這個容器目前為從機狀態,至此集群已啟動完成。

 

9. 若啟動失敗了,通過如下命令觀察zookeeper的啟動日志:

sudo docker logs 容器id/容器名稱

內容示例如下:

[release@sh-lbs02 ~]$ sudo docker logs zk-2181
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.server.quorum.QuorumPeerConfig).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM