国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用 Docker 一步搞定 ZooKeeper 集群的搭建

B0B0 / 739人閱讀

摘要:背景原來學習時我是在本地搭建的偽集群雖然說使用起來沒有什么問題但是總感覺部署起來有點麻煩剛好我發現了已經有了的鏡像了于是就嘗試了一下發現真是爽爆了幾個命令就可以搭建一個完整的集群下面我簡單記錄一下使用搭建集群的一些步驟鏡像下載上有不少鏡像不

背景

原來學習 ZK 時, 我是在本地搭建的偽集群, 雖然說使用起來沒有什么問題, 但是總感覺部署起來有點麻煩. 剛好我發現了 ZK 已經有了 Docker 的鏡像了, 于是就嘗試了一下, 發現真是爽爆了, 幾個命令就可以搭建一個完整的 ZK 集群. 下面我簡單記錄一下使用 Docker 搭建 ZK 集群的一些步驟.

鏡像下載

hub.docker.com 上有不少 ZK 鏡像, 不過為了穩定起見, 我們就使用官方的 ZK 鏡像吧.
首先執行如下命令:

docker pull zookeeper

當出現如下結果時, 表示鏡像已經下載完成了:

>>> docker pull zookeeper
Using default tag: latest
latest: Pulling from library/zookeeper

e110a4a17941: Pull complete
a696cba1f6e8: Pull complete
bc427bd93e95: Pull complete
c72391ae24f6: Pull complete
40ab409b6b34: Pull complete
d4bb8183b85d: Pull complete
0600755f1470: Pull complete
Digest: sha256:12458234bb9f01336df718b7470cabaf5c357052cbcb91f8e80be07635994464
Status: Downloaded newer image for zookeeper:latest
ZK 鏡像的基本使用 啟動 ZK 鏡像
>>> docker run --name my_zookeeper -d zookeeper:latest

這個命令會在后臺運行一個 zookeeper 容器, 名字是 my_zookeeper, 并且它默認會導出 2181 端口.
接著我們使用:

docker logs -f my_zookeeper

這個命令查看 ZK 的運行情況, 輸出類似如下內容時, 表示 ZK 已經成功啟動了:

>>> docker logs -f my_zookeeper
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
...
2016-09-14 06:40:03,445 [myid:] - INFO  [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181
使用 ZK 命令行客戶端連接 ZK

因為剛才我們啟動的那個 ZK 容器并沒有綁定宿主機的端口, 因此我們不能直接訪問它. 但是我們可以通過 Docker 的 link 機制來對這個 ZK 容器進行訪問. 執行如下命令:

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

如果對 Docker 有過了解的話, 那么對上面的命令一定不會陌生了.
這個命令的含義是:

啟動一個 zookeeper 鏡像, 并運行這個鏡像內的 zkCli.sh 命令, 命令參數是 "-server zookeeper"

將我們先前啟動的名為 my_zookeeper 的容器連接(link) 到我們新建的這個容器上, 并將其主機名命名為 zookeeper

當我們執行了這個命令后, 就可以像正常使用 ZK 命令行客戶端一樣操作 ZK 服務了.

ZK 集群的搭建

因為一個一個地啟動 ZK 太麻煩了, 所以為了方便起見, 我直接使用 docker-compose 來啟動 ZK 集群.
首先創建一個名為 docker-compose.yml 的文件, 其內容如下:

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_IDZOO_SERVERS 是搭建 ZK 集群需要設置的兩個環境變量, 其中 ZOO_MY_ID 表示 ZK 服務的 id, 它是1-255 之間的整數, 必須在集群中唯一. ZOO_SERVERS 是ZK 集群的主機列表.

接著我們在 docker-compose.yml 當前目錄下運行:

COMPOSE_PROJECT_NAME=zk_test docker-compose up

即可啟動 ZK 集群了.
執行上述命令成功后, 接著在另一個終端中運行 docker-compose ps 命令可以查看啟動的 ZK 容器:

>>> COMPOSE_PROJECT_NAME=zk_test docker-compose ps
Name              Command               State           Ports
----------------------------------------------------------------------
zoo1   /docker-entrypoint.sh zkSe ...   Up      0.0.0.0:2181->2181/tcp
zoo2   /docker-entrypoint.sh zkSe ...   Up      0.0.0.0:2182->2181/tcp
zoo3   /docker-entrypoint.sh zkSe ...   Up      0.0.0.0:2183->2181/tcp

注意, 我們在 "docker-compose up" 和 "docker-compose ps" 前都添加了 COMPOSE_PROJECT_NAME=zk_test 這個環境變量, 這是為我們的 compose 工程起一個名字, 以免與其他的 compose 混淆.

使用 Docker 命令行客戶端連接 ZK 集群

通過 docker-compose ps 命令, 我們知道啟動的 ZK 集群的三個主機名分別是 zoo1, zoo2, zoo3, 因此我們分別 link 它們即可:

docker run -it --rm 
        --link zoo1:zk1 
        --link zoo2:zk2 
        --link zoo3:zk3 
        --net zktest_default 
        zookeeper zkCli.sh -server zk1:2181,zk2:2181,zk3:2181
通過本地主機連接 ZK 集群

因為我們分別將 zoo1, zoo2, zoo3 的 2181 端口映射到了 本地主機的2181, 2182, 2183 端口上, 因此我們使用如下命令即可連接 ZK 集群了:

zkCli.sh -server localhost:2181,localhost:2182,localhost:2183
查看集群

我們可以通過 nc 命令連接到指定的 ZK 服務器, 然后發送 stat 可以查看 ZK 服務的狀態, 例如:

>>> echo stat | nc 127.0.0.1 2181
Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT
Clients:
 /172.18.0.1:49810[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 5/39/74
Received: 4
Sent: 3
Connections: 1
Outstanding: 0
Zxid: 0x200000002
Mode: follower
Node count: 4
>>> echo stat | nc 127.0.0.1 2182
Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT
Clients:
 /172.18.0.1:50870[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/0
Received: 2
Sent: 1
Connections: 1
Outstanding: 0
Zxid: 0x200000002
Mode: follower
Node count: 4
>>> echo stat | nc 127.0.0.1 2183
Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT
Clients:
 /172.18.0.1:51820[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/0
Received: 2
Sent: 1
Connections: 1
Outstanding: 0
Zxid: 0x200000002
Mode: leader
Node count: 4

通過上面的輸出, 我們可以看到, zoo1, zoo2 都是 follower, 而 zoo3 是 leader, 因此證明了我們的 ZK 集群確實是搭建起來了.

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28105.html

相關文章

  • Docker搭建Zookeeper集群

    Docker搭建Zookeeper集群 這之前的準備和Docker搭建Hadoop集群是一樣的,請關注上一篇筆記。 第一步根據上次wiki中的方法啟動docker容器 docker run --rm -it -h zoo1 --name zoo1 ice/hadoop /bin/bash docker run --rm -it -h zoo2 --name zoo2 ice/hadoop /bin...

    CNZPH 評論0 收藏0
  • docker環境搭建zk集群

    摘要:搭建系列環境搭建集群搭建集群環境搭建搭建集群環境搭建序對于個人開發者而言,學習分布式的好多東東,都比較費勁,因為手頭的機器不夠。本文主要是記錄使用搭建集群的過程。鳴謝使用不同網絡模型搭建集群這篇文章總結的很好有坑,沒嘗試成功 docker搭建系列 docker環境搭建zk集群 docker搭建redis集群 docker環境搭建elasticsearch docker搭建rabbit...

    xiongzenghui 評論0 收藏0
  • 技術干貨 | 初次微服務體驗:從Docker容器農場說起

    摘要:或許你的第一次微服務體驗,就從本文開始在本文中,和等紛紛亮相,并配有詳細的代碼說明。該角色與本地網絡及的配置設置相關。由于會在虛擬機初始化過程中自動執行配置任務,因此惟一的解決辦法就是將相關內容提取至單獨的劇本當中 這是一篇溫和有趣的技術文章,如果你初識Docker,對微服務充滿興趣,不妨一讀。或許你的第一次微服務體驗,就從本文開始…… 在本文中,Mesos、Zookeeper、Ma...

    魏憲會 評論0 收藏0

發表評論

0條評論

B0B0

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<