1分鍾,通過docker-compose 搭建zookeeper 集群


一、創建三節點 zookeeper 集群

  1. 將 docker-compose.yml 保存到當前命令行目錄下

docker-compose.yml 文件

version: '2'
networks:
  zk:
services:
  zookeeper1:
    image: zookeeper
    container_name: zk1.cloud
    networks:
        - zk
    ports:
        - "2181:2181"
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zk2.cloud:2888:3888 server.3=zk3.cloud:2888:3888
  zookeeper2:
    image: zookeeper
    container_name: zk2.cloud
    networks:
        - zk
    ports:
        - "2182:2181"
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zk1.cloud:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zk3.cloud:2888:3888
  zookeeper3:
    image: zookeeper
    container_name: zk3.cloud
    networks:
        - zk
    ports:
        - "2183:2181"
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zk1.cloud:2888:3888 server.2=zk2.cloud:2888:3888 server.3=0.0.0.0:2888:3888
  1. 執行命令,如果是首次獲取 zookeeper 鏡像,輸出會有不同

輸入

docker pull zookeeper

輸出

latest: Pulling from library/zookeeper
Digest: sha256:3f03c6f5a91e0f638f3d6a755b2d32c06583766031353be87e2d633fa3006c23
Status: Image is up to date for zookeeper:latest

 

  1. 后台啟動 zookeeper 集群
docker-compose up -d

 

輸出命令

Creating network "dczk_zk" with the default driver
Creating zk2.cloud ... done
Creating zk1.cloud ... done
Creating zk3.cloud ... done

 

二、檢查進程狀態

輸入

docker ps

 

輸出

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                        NAMES
cb176c76c620        zookeeper           "/docker-entrypoint.…"   6 minutes ago       Up 6 minutes        2888/tcp, 3888/tcp, 0.0.0.0:2183->2181/tcp   zk3.cloud
ee00aba1c766        zookeeper           "/docker-entrypoint.…"   6 minutes ago       Up 6 minutes        2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/tcp   zk1.cloud
5d95baa693c2        zookeeper           "/docker-entrypoint.…"   6 minutes ago       Up 6 minutes        2888/tcp, 3888/tcp, 0.0.0.0:2182->2181/tcp   zk2.cloud

 

docker-compose ps

 

輸出

Name                 Command               State                     Ports
-----------------------------------------------------------------------------------------------
zk1.cloud   /docker-entrypoint.sh zkSe ...   Up      0.0.0.0:2181->2181/tcp, 2888/tcp, 3888/tcp
zk2.cloud   /docker-entrypoint.sh zkSe ...   Up      0.0.0.0:2182->2181/tcp, 2888/tcp, 3888/tcp
zk3.cloud   /docker-entrypoint.sh zkSe ...   Up      0.0.0.0:2183->2181/tcp, 2888/tcp, 3888/tcp

 

三、測試

1. docker 3 為leader

輸入

docker exec -it zk1.cloud bash ./bin/zkServer.sh status

 

輸出

ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower

輸入

docker exec -it zk2.cloud bash ./bin/zkServer.sh status

 

輸出

ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower

輸入

docker exec -it zk3.cloud bash ./bin/zkServer.sh status

 

輸出

ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: leader

 

2. 關閉 zk3.cloud 后檢查leader變化情況

輸入

docker stop zk3.cloud
docker exec -it zk2.cloud bash ./bin/zkServer.sh status

輸出

ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: leader

 

3. 再次啟動 zk3.cloud 后檢查 leader變化情況

輸入

docker start zk3.cloud
docker exec -it zk2.cloud bash ./bin/zkServer.sh status

輸出

ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: leader

輸入

docker exec -it zk3.cloud bash ./bin/zkServer.sh status

輸出

ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower

 

4. 關閉 zk2.cloud 后檢查 leader變化情況

輸入

docker stop zk2.cloud
docker exec -it zk3.cloud bash ./bin/zkServer.sh status

輸出

ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: leader

 


免責聲明!

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



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