摘要:背景原來學(xué)習(xí)時(shí)我是在本地搭建的偽集群雖然說使用起來沒有什么問題但是總感覺部署起來有點(diǎn)麻煩剛好我發(fā)現(xiàn)了已經(jīng)有了的鏡像了于是就嘗試了一下發(fā)現(xiàn)真是爽爆了幾個(gè)命令就可以搭建一個(gè)完整的集群下面我簡(jiǎn)單記錄一下使用搭建集群的一些步驟鏡像下載上有不少鏡像不
背景
原來學(xué)習(xí) ZK 時(shí), 我是在本地搭建的偽集群, 雖然說使用起來沒有什么問題, 但是總感覺部署起來有點(diǎn)麻煩. 剛好我發(fā)現(xiàn)了 ZK 已經(jīng)有了 Docker 的鏡像了, 于是就嘗試了一下, 發(fā)現(xiàn)真是爽爆了, 幾個(gè)命令就可以搭建一個(gè)完整的 ZK 集群. 下面我簡(jiǎn)單記錄一下使用 Docker 搭建 ZK 集群的一些步驟.
鏡像下載hub.docker.com 上有不少 ZK 鏡像, 不過為了穩(wěn)定起見, 我們就使用官方的 ZK 鏡像吧.
首先執(zhí)行如下命令:
docker pull zookeeper
當(dāng)出現(xiàn)如下結(jié)果時(shí), 表示鏡像已經(jīng)下載完成了:
>>> 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:latestZK 鏡像的基本使用 啟動(dòng) ZK 鏡像
>>> docker run --name my_zookeeper -d zookeeper:latest
這個(gè)命令會(huì)在后臺(tái)運(yùn)行一個(gè) zookeeper 容器, 名字是 my_zookeeper, 并且它默認(rèn)會(huì)導(dǎo)出 2181 端口.
接著我們使用:
docker logs -f my_zookeeper
這個(gè)命令查看 ZK 的運(yùn)行情況, 輸出類似如下內(nèi)容時(shí), 表示 ZK 已經(jīng)成功啟動(dòng)了:
>>> 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
因?yàn)閯偛盼覀儐?dòng)的那個(gè) ZK 容器并沒有綁定宿主機(jī)的端口, 因此我們不能直接訪問它. 但是我們可以通過 Docker 的 link 機(jī)制來對(duì)這個(gè) ZK 容器進(jìn)行訪問. 執(zhí)行如下命令:
docker run -it --rm --link my_zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper
如果對(duì) Docker 有過了解的話, 那么對(duì)上面的命令一定不會(huì)陌生了.
這個(gè)命令的含義是:
啟動(dòng)一個(gè) zookeeper 鏡像, 并運(yùn)行這個(gè)鏡像內(nèi)的 zkCli.sh 命令, 命令參數(shù)是 "-server zookeeper"
將我們先前啟動(dòng)的名為 my_zookeeper 的容器連接(link) 到我們新建的這個(gè)容器上, 并將其主機(jī)名命名為 zookeeper
當(dāng)我們執(zhí)行了這個(gè)命令后, 就可以像正常使用 ZK 命令行客戶端一樣操作 ZK 服務(wù)了.
ZK 集群的搭建因?yàn)橐粋€(gè)一個(gè)地啟動(dòng) ZK 太麻煩了, 所以為了方便起見, 我直接使用 docker-compose 來啟動(dòng) ZK 集群.
首先創(chuàng)建一個(gè)名為 docker-compose.yml 的文件, 其內(nèi)容如下:
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
這個(gè)配置文件會(huì)告訴 Docker 分別運(yùn)行三個(gè) zookeeper 鏡像, 并分別將本地的 2181, 2182, 2183 端口綁定到對(duì)應(yīng)的容器的2181端口上.
ZOO_MY_ID 和 ZOO_SERVERS 是搭建 ZK 集群需要設(shè)置的兩個(gè)環(huán)境變量, 其中 ZOO_MY_ID 表示 ZK 服務(wù)的 id, 它是1-255 之間的整數(shù), 必須在集群中唯一. ZOO_SERVERS 是ZK 集群的主機(jī)列表.
接著我們?cè)?docker-compose.yml 當(dāng)前目錄下運(yùn)行:
COMPOSE_PROJECT_NAME=zk_test docker-compose up
即可啟動(dòng) ZK 集群了.
執(zhí)行上述命令成功后, 接著在另一個(gè)終端中運(yùn)行 docker-compose ps 命令可以查看啟動(dòng)的 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 命令行客戶端連接 ZK 集群注意, 我們?cè)?"docker-compose up" 和 "docker-compose ps" 前都添加了 COMPOSE_PROJECT_NAME=zk_test 這個(gè)環(huán)境變量, 這是為我們的 compose 工程起一個(gè)名字, 以免與其他的 compose 混淆.
通過 docker-compose ps 命令, 我們知道啟動(dòng)的 ZK 集群的三個(gè)主機(jī)名分別是 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通過本地主機(jī)連接 ZK 集群
因?yàn)槲覀兎謩e將 zoo1, zoo2, zoo3 的 2181 端口映射到了 本地主機(jī)的2181, 2182, 2183 端口上, 因此我們使用如下命令即可連接 ZK 集群了:
zkCli.sh -server localhost:2181,localhost:2182,localhost:2183查看集群
我們可以通過 nc 命令連接到指定的 ZK 服務(wù)器, 然后發(fā)送 stat 可以查看 ZK 服務(wù)的狀態(tài), 例如:
>>> 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 集群確實(shí)是搭建起來了.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/28105.html
Docker搭建Zookeeper集群 這之前的準(zhǔn)備和Docker搭建Hadoop集群是一樣的,請(qǐng)關(guān)注上一篇筆記。 第一步根據(jù)上次wiki中的方法啟動(dòng)docker容器 docker run --rm -it -h zoo1 --name zoo1 ice/hadoop /bin/bash docker run --rm -it -h zoo2 --name zoo2 ice/hadoop /bin...
摘要:搭建系列環(huán)境搭建集群搭建集群環(huán)境搭建搭建集群環(huán)境搭建序?qū)τ趥€(gè)人開發(fā)者而言,學(xué)習(xí)分布式的好多東東,都比較費(fèi)勁,因?yàn)槭诸^的機(jī)器不夠。本文主要是記錄使用搭建集群的過程。鳴謝使用不同網(wǎng)絡(luò)模型搭建集群這篇文章總結(jié)的很好有坑,沒嘗試成功 docker搭建系列 docker環(huán)境搭建zk集群 docker搭建redis集群 docker環(huán)境搭建elasticsearch docker搭建rabbit...
摘要:或許你的第一次微服務(wù)體驗(yàn),就從本文開始在本文中,和等紛紛亮相,并配有詳細(xì)的代碼說明。該角色與本地網(wǎng)絡(luò)及的配置設(shè)置相關(guān)。由于會(huì)在虛擬機(jī)初始化過程中自動(dòng)執(zhí)行配置任務(wù),因此惟一的解決辦法就是將相關(guān)內(nèi)容提取至單獨(dú)的劇本當(dāng)中 這是一篇溫和有趣的技術(shù)文章,如果你初識(shí)Docker,對(duì)微服務(wù)充滿興趣,不妨一讀。或許你的第一次微服務(wù)體驗(yàn),就從本文開始…… 在本文中,Mesos、Zookeeper、Ma...
閱讀 2104·2023-04-25 20:52
閱讀 2497·2021-09-22 15:22
閱讀 2128·2021-08-09 13:44
閱讀 1772·2019-08-30 13:55
閱讀 2813·2019-08-23 15:42
閱讀 2287·2019-08-23 14:14
閱讀 2880·2019-08-23 13:58
閱讀 3009·2019-08-23 11:49