docker搭建Zookeeper集群的方法步驟
0.前言
之前在學springcloud的時候,提到有些項目還是使用zookeeper作為註冊中心。
因此決定掌握這個技能,但是本地為瞭測試而部署一套zookeeper集群還是比較麻煩的。
所以打算使用docker在本地上搭建zookeeper集群
1.前提
- 電腦裡安裝過docker
- 瞭解部分docker命令
2.開始搭建
準備好一個空目錄,需要建3個文件夾,然後每個文件夾裡面建2個文件,如下所示:
. ├── zk1 (文件夾) │ ├── myid (文件) │ └── zoo.cfg (文件) ├── zk2(文件夾) │ ├── myid(文件) │ └── zoo.cfg(文件) └── zk3(文件夾) ├── myid(文件) └── zoo.cfg(文件)
解釋
文件 | 文件裡面內容 | |
---|---|---|
zk1/myid | Zookeeper第一個節點的id配置,隻需要一個數字 | 100 |
zk1/zoo.cfg | Zookeeper第一個節點的配置信息 | 之後有個例子 |
zk2/myid | Zookeeper第二個節點的id配置,隻需要一個數字 | 200 |
zk2/zoo.cfg | Zookeeper第二個節點的配置信息 | 之後有個例子 |
zk3/myid | Zookeeper第三個節點的id配置,隻需要一個數字 | 300 |
zk3/zoo.cfg | Zookeeper第三個節點的配置信息 | 之後有個例子 |
創建zoo.cfg
3個zoo.cfg裡面內容是一樣的,如下所示
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/zkData clientPort=2181 server.100=127.0.0.1:2888:3888 server.200=127.0.0.1:2888:3888 server.300=127.0.0.1:2888:3888
比較奇怪的是最後3行,這3行也是這個集群能否創建的關鍵
server.100=127.0.0.1:2888:3888 server.200=127.0.0.1:2888:3888 server.300=127.0.0.1:2888:3888
他們都形如
server.A=B:C:D
具體含義如下
參數 | 含義 |
---|---|
server | 常量,這個不用改 |
A | 就是myid,在【開始搭建】的【解釋】裡提到過的數字 |
B | 服務器地址,因為都是本地環境搭建的,就是127.0.0.1 |
C | 信息交互端口,不用改,就2888挺好 |
D | 選舉端口,不用改,就3888挺好 |
3.docker搭建
當3個文件夾,6個目錄創建好瞭以後,就可以使用命令進行搭建瞭
1.docker創建網絡
創建docker網絡,是為瞭保證3個容器可以互相通信
命令如下:其中network-zk-nb是自己取的,後面創建容器時會用到
docker network create network-zk-nb
2.啟動第1個zk節點
如果是linux或mac
docker run -d --name zk1 \ --restart always \ -e JVMFLAGS="-Xmx1024m" \ -v /Users/admin/env/zk/zk1/zoo.cfg:/conf/zoo.cfg \ -v /Users/admin/env/zk/zk1/myid:/data/myid \ --network network-zk-nb --network-alias zk1 \ -p 2181:2181 zookeeper:3.5.7
如果是windows,那麼就改為
docker run -d --name zk1 ^ --restart always ^ -e JVMFLAGS="-Xmx1024m" ^ -v ./zk1/zoo.cfg:/conf/zoo.cfg ^ -v ./zk1/zoo.cfg:/data/myid ^ --network network-zk-nb --network-alias zk1 ^ -p 2181:2181 zookeeper:3.5.7
PS:因為裡面用到瞭./,也就是相對目錄,所以你必須要在3個目錄所在的目錄下才能使用這條命令
3.啟動第2個zk節點
docker run -d --name zk2 \ --restart always \ -e JVMFLAGS="-Xmx1024m" \ -v /Users/admin/env/zk/zk2/zoo.cfg:/conf/zoo.cfg \ -v /Users/admin/env/zk/zk2/myid:/data/myid \ --network network-zk-nb --network-alias zk2 \ -p 2182:2181 zookeeper:3.5.7
4.啟動第3個zk節點
docker run -d --name zk3 \ --restart always \ -e JVMFLAGS="-Xmx1024m" \ -v /Users/admin/env/zk/zk3/zoo.cfg:/conf/zoo.cfg \ -v /Users/admin/env/zk/zk3/myid:/data/myid \ --network network-zk-nb --network-alias zk3 \ -p 2183:2181 zookeeper:3.5.7
至此zookeeper的集群環境搭建完畢
4.訪問節點
1.進入zk第一個節點的docker容器內部
docker exec -it zk1 /bin/bash
查看容器目錄
ls -l
-rw-r--r-- 1 zookeeper zookeeper 11358 Sep 13 2018 LICENSE.txt -rw-r--r-- 1 zookeeper zookeeper 432 Feb 10 2020 NOTICE.txt -rw-r--r-- 1 zookeeper zookeeper 1560 Feb 7 2020 README.md -rw-r--r-- 1 zookeeper zookeeper 1347 Feb 7 2020 README_packaging.txt drwxr-xr-x 2 zookeeper zookeeper 4096 Feb 10 2020 bin drwxr-xr-x 2 zookeeper zookeeper 4096 May 16 2020 conf drwxr-xr-x 5 zookeeper zookeeper 4096 Feb 10 2020 docs drwxr-xr-x 2 zookeeper zookeeper 4096 May 16 2020 lib
進入bin目錄
cd bin
查看bin目錄
ls -l
total 56 -rwxr-xr-x 1 zookeeper zookeeper 232 May 4 2018 README.txt -rwxr-xr-x 1 zookeeper zookeeper 2067 Feb 7 2020 zkCleanup.sh -rwxr-xr-x 1 zookeeper zookeeper 1158 Feb 10 2020 zkCli.cmd -rwxr-xr-x 1 zookeeper zookeeper 1621 Feb 7 2020 zkCli.sh -rwxr-xr-x 1 zookeeper zookeeper 1766 Feb 7 2020 zkEnv.cmd -rwxr-xr-x 1 zookeeper zookeeper 3690 Jan 31 2020 zkEnv.sh -rwxr-xr-x 1 zookeeper zookeeper 4573 Feb 7 2020 zkServer-initialize.sh -rwxr-xr-x 1 zookeeper zookeeper 1286 Jan 31 2020 zkServer.cmd -rwxr-xr-x 1 zookeeper zookeeper 9386 Feb 7 2020 zkServer.sh -rwxr-xr-x 1 zookeeper zookeeper 996 Oct 3 2019 zkTxnLogToolkit.cmd -rwxr-xr-x 1 zookeeper zookeeper 1385 Feb 7 2020 zkTxnLogToolkit.sh
2.使用zk的客戶端進行訪問
zkCli.sh
WatchedEvent state:SyncConnected type:None path:null [zk: localhost:2181(CONNECTED) 0]
3.在zk中使用命令
ls /
至此,zk集群的搭建與使用就已經完成,後面學習的就是使用java的方式來連接
到此這篇關於docker搭建Zookeeper集群的方法步驟的文章就介紹到這瞭,更多相關docker搭建Zookeeper集群內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Docker 網絡模式及配置方式
- zookeeper集群搭建超詳細過程
- Redis快速部署為Docker容器的實現方法
- Nginx代理Partainer的具體使用
- docker快速部署zabbix的方法