1. 程式人生 > >自己學Docker:15.Docker使用實戰--zookeeper叢集部署

自己學Docker:15.Docker使用實戰--zookeeper叢集部署

  1. 使用Docker映象
  2. 通過Dockerfile構建
  3. 通過docker stack deploy(或者docker-compose)

1,2可以歸為一種,即單個應用方式: Dockerfile -> 映象 -> 容器(docker run) 。對於搭建叢集環境的話,Docker Stack方式實施和管理更為方便。所以這裡搭建一個zookeeper的叢集環境就不再使用1,2種,想,具體方式可以參見Docker建立MySQL服務

zookeeper.yml

通過docker stack deploy方式首先要編寫yaml檔案。樣例可以參見dockerhub的zookeeper映象的介紹


如下:

version: '3.1'

services:
    zoo1:
        image: zookeeper
        restart: always
        hostname: 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
        hostname: 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 hostname: 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

上面的檔案建立了三個zookeeper的叢集服務,以複製模式(replicated mode)啟動Zookeeper,並將容器內的2181埠分別對映到主機的2181,2182,2183。

當然,嚴格的說,這個也不能說是叢集模式。畢竟所有容器都執行再同一主機,如果宕機,所有的zookeeper伺服器都將處於離線狀態。

執行,生成服務

採用如下命令:

sudo docker stack deploy -c zookeeper.yml zk

這裡寫圖片描述

檢視服務狀態:

sudo docker stack services zk

這裡寫圖片描述

連線zookeeper服務

zkCli.sh

./zkCli.sh -server 127.0.0.1:2181

這裡寫圖片描述
可以成功連線到上面建立的zookeeper服務。