docker -compose 安裝zookeeper,建立zookeeper集羣

一、準備 

    3臺虛擬機安裝linux,centos7. 

網絡連接使用NAT模式

二、docker安裝zookeeper

1.啓動docker 服務

service docker start

2.查找鏡像

docker search zookeeper

3.下載鏡像

docker pull zookeeper

4.主機上建立掛載目錄

mkdir -p /opt/zookeeper/data
mkdir -p /opt/zookeeper/conf

5.分別設置每臺機器的server id

cd /opt/zookeeper/data
touch myid
echo 0 > myid

id分別要對應配置文件中的id,即server.0,server.1,server.2 

6.編寫zookeeper配置文件zoo.cfg,配置文件放在/opt/zookeeper/conf 目錄下

cd /opt/zookeeper/conf
vim 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.137.129:2888:3888
server.1=192.168.137.130:2888:3888
server.2=192.168.137.131:2888:3888

注意:若安裝單機版zookeeper,則配置文件如下:

clientPort=2181
dataDir=/data
dataLogDir=/data/log
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60

 

7.在三臺機器上分別啓動容器(使用docker-compose編排zookeeper步驟爲8-14步)

docker run  --network host  -v /opt/zookeeper/data:/data -v /opt/zookeeper/conf:/conf --name zookeeper_rh  -d docker.io/zookeeper

注意:

命令說明:

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

8.編排zookeeper.yml

cd /opt/zookeeper/dockerfile
vim zookeeper.yml 
zookeeper_rh:
        image: zookeeper
        container_name: zookeeper_rh
        restart: always
        volumes:
                - /opt/zookeeper/data:/data  
                - /opt/zookeeper/conf:/conf      
        ports:
                - "2181:2181"

9.構建zookeeper容器

docker-compose -f  /opt/zookeeper/dockerfile/zookeeper.yml up

10.啓動容器

docker-compose -f  /opt/zookeeper/dockerfile/zookeeper.yml  start

11.編輯開機啓動腳本

cd /opt/zookeeper/dockerfile
vim boot_zookeeper
#!/bin/bash
#chkconfig:2345 30 80
case $1 in
start)
docker-compose -f /opt/zookeeper/zookeeper.yml start
;;
stop)
docker-compose -f /opt/zookeeper/zookeeper.yml stop
;;
restart)
docker-compose -f /opt/zookeeper/zookeeper.yml restart
;;
*)
echo "require start|stop|restart" ;;
esac

12.上傳 boot_zookeeper到/etc/init.d/

cp boot_zookeeper /etc/init.d

13.添加執行權限

chmod +x /etc/init.d/boot_zookeeper

14.加入開機啓動

chkconfig --add boot_zookeeper


15.開啓2181端口

vim /etc/sysconfig/iptables
# 加入如下代碼
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT

16.保存退出後重啓防火牆

service iptables restart

17.查看容器狀態

選擇一臺服務器,進入容器,在zookeeper的bin目錄下執行 ./zkServer.sh status,可看到該節點是leader還是follower

docker ps
docker exec -it 546 bash
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS     NAMES
546a2cf471ad   zookeeper   "/docker-entrypoint.…"   27 minutes ago   Up 27 minutes             zookeeper_1
[root@localhost ~]# docker exec -it 546 bash
root@localhost:/apache-zookeeper-3.7.0-bin# docker exec -it 546 bashdocker exec -it 546 bash
bash: docker: command not found
root@localhost:/apache-zookeeper-3.7.0-bin# ls
LICENSE.txt  NOTICE.txt  README.md  README_packaging.md  bin  conf  docs  lib
root@localhost:/apache-zookeeper-3.7.0-bin# cd bin
root@localhost:/apache-zookeeper-3.7.0-bin/bin# ls
README.txt    zkCli.cmd  zkEnv.cmd  zkServer-initialize.sh  zkServer.sh            zkSnapShotToolkit.sh    zkSnapshotComparer.sh  zkTxnLogToolkit.sh
zkCleanup.sh  zkCli.sh   zkEnv.sh   zkServer.cmd            zkSnapShotToolkit.cmd  zkSnapshotComparer.cmd  zkTxnLogToolkit.cmd
root@localhost:/apache-zookeeper-3.7.0-bin/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
root@localhost:/apache-zookeeper-3.7.0-bin/bin# 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章