1. 程式人生 > 其它 >docker-compose搭建zookeeper叢集

docker-compose搭建zookeeper叢集

1.拉取映象

docker pull zookeeper:3.4.11

2.zookeeper叢集搭建

mkidr zk-cluster
cd zk-cluster

vim docker-compose.yml

寫入如下內容

version: '2'
services:
    zoo1:
        image: zookeeper:3.4.11
        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:3.4.11
        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:3.4.11
        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埠上(每個zookeeper容器的預設埠都是2181,這句話意思也就是說,將宿主機的2181、2182、2183這3個埠號,分別對映到3個zookeeper容器的2181埠)。
ZOO_MY_ID 和 ZOO_SERVERS 是搭建 ZK 叢集需要設定的兩個環境變數,其中 ZOO_MY_ID 表示 ZK 服務的 id,它是1-255 之間的整數,必須在叢集中唯一;ZOO_SERVERS 是ZK 叢集的主機列表。

3.執行

接著我們在 docker-compose.yml 所在的目錄下執行:

COMPOSE_PROJECT_NAME=zk_cluster docker-compose up

即可啟動 ZK 叢集了。

注意:這種方式非後臺執行,當執行 Ctrl + C 組合鍵的時候,所有的ZK容器都會停止執行。

以後臺方式執行docker-compose

COMPOSE_PROJECT_NAME=zk_cluster docker-compose up -d

4.檢視啟動的ZK叢集

執行上述命令成功後,接著新開啟一個終端,然後在新終端介面中,首先進入zk-cluster目錄,在該目錄下執行以下命令可以檢視啟動的 ZK 容器:

COMPOSE_PROJECT_NAME=zk_cluster docker-compose ps

5.測試連線ZK叢集

通過上面的圖,可以看到3個ZK容器的ID資訊。

這裡我們先進入zoo1這個容器,檢視ZK的資訊,執行以下命令:

docker exec -it zoo1 zkServer.sh status

docker exec -it zoo2 zkServer.sh status

docker exec -it zoo3 zkServer.sh status