Zookeeper——Docker下安裝部署


 

單節點安裝

一、 環境說明

  • docker: 18.09.9-ce
  • zookeeper: 3.5.6

 

 

二、 拉取 zookeeper 鏡像

  • 拉取鏡像
docker pull zookeeper

默認是摘取最新版本 zookeeper:latest

  • 查看當前鏡像

 

 

三、 准備工作

將它部署在 /usr/local/zookeeper 目錄下:

cd /usr/local && mkdir zookeeper && cd zookeeper

創建data目錄,用於掛載容器中的數據目錄:

mkdir data

 

 

四、 正式部署

  • 部署命令:
docker run -d -e TZ="Asia/Shanghai" -p 2181:2181 -v $PWD/data:/data --name zookeeper --restart always zookeeper
  • 命令詳細說明:
-e TZ="Asia/Shanghai" # 指定上海時區 
-d # 表示在一直在后台運行容器
-p 2181:2181 # 對端口進行映射,將本地2181端口映射到容器內部的2181端口
--name # 設置創建的容器名稱
-v # 將本地目錄(文件)掛載到容器指定目錄;
--restart always #始終重新啟動zookeeper
  • 查看容器啟動情況:
docker ps -a

注:狀態(STATUS)為Up,說明容器已經啟動成功。

 

 

五、 測試

  • 使用zk命令行客戶端連接zk

docker run -it --rm --link zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper

說明:-server zookeeper是啟動zkCli.sh的參數

 

 

六、 其它命令

# 查看zookeeper容器實例進程信息
docker top zookeeper

# 停止zookeeper實例進程
docker stop zookeeper

# 啟動zookeeper實例進程
docker start zookeeper

# 重啟zookeeper實例進程
docker restart zookeeper

# 查看zookeeper進程日志
docker logs -f zookeeper

# 殺死zookeeper實例進程
docker kill -s KILL zookeeper

# 移除zookeeper實例
docker rm -f -v zookeeper

 

 

集群方式安裝

集群方式選擇使用docker-compose來完成。

 

一、安裝docker-compose

curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

 

 

二、配置docker-compose

編寫配置文件,並將其命名為:docker-compose.ymldocker-compose默認配置文件名)
配置文件內容:

version: '2'
services:
    zoo1:
        image: zookeeper
        restart: always
        container_name: zoo1
        ports:
            - "2181:2181"
        environment:
            ZOO_MY_ID: 1
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

    zoo2:
        image: zookeeper
        restart: always
        container_name: zoo2
        ports:
            - "2182:2181"
        environment:
            ZOO_MY_ID: 2
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

    zoo3:
        image: zookeeper
        restart: always
        container_name: zoo3
        ports:
            - "2183:2181"
        environment:
            ZOO_MY_ID: 3
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

此配置文件表示,Docker需要啟動三個zookeeper實例,並將2181,2182,2183三個端口號映射到容器內的2181這個端口上。
ZOO_MY_ID:表示zk服務的ID, 取值為1-255之間的整數,且必須唯一
ZOO_SERVERS:表示zk集群的主機列表

 

 

三、啟動zookeeper集群

docker-compose up -d

該命令執行需要在docker-compose配置文件的目錄下執行,結果如下:

[root@izbp13xko46hud9vfr5s94z conf]# docker-compose up -d 
Starting zoo1 ... done
Starting zoo2 ... done
Starting zoo3 ... done
[root@izbp13xko46hud9vfr5s94z conf]# 

 

 

四、查看zookeeper集群實例

  • 通過docker ps查看

[root@izbp13xko46hud9vfr5s94z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e53b4c838001 zookeeper "/docker-entrypoint.…" 4 minutes ago Up 44 seconds 2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/tcp zoo1
19282fb6f9b4 zookeeper "/docker-entrypoint.…" 4 minutes ago Up 44 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2182->2181/tcp zoo2
099b926fa2d3 zookeeper "/docker-entrypoint.…" 4 minutes ago Up 44 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2183->2181/tcp zoo3

  • 通過docker-compose ps查看
[root@izbp13xko46hud9vfr5s94z conf]# docker-compose ps 
Name              Command               State                     Ports                   
------------------------------------------------------------------------------------------
zoo1   /docker-entrypoint.sh zkSe ...   Up      0.0.0.0:2181->2181/tcp, 2888/tcp, 3888/tcp
zoo2   /docker-entrypoint.sh zkSe ...   Up      0.0.0.0:2182->2181/tcp, 2888/tcp, 3888/tcp
zoo3   /docker-entrypoint.sh zkSe ...   Up      0.0.0.0:2183->2181/tcp, 2888/tcp, 3888/tcp
[root@izbp13xko46hud9vfr5s94z conf]# 

注:這個命令需要在docker-compose配置文件下執行。 

 

 

五、管理docker-compose服務

# 停止docker-compose服務
docker-compose stop

# 啟動docker-compose服務
docker-compose start
# 重啟docker-compose服務
docker-compose restart

 

 

六、查看zookeeper集群節點主從關系

使用docker exec -it zoo1 /bin/bash這個命令進入zoo1節點中,之后輸入./bin/zkServer.sh statu來查看節點主從關系

[root@izbp13xko46hud9vfr5s94z conf]# docker exec -it zoo1 /bin/bash 
bash-4.4# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower
bash-4.4# 

 


免責聲明!

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



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