網(wǎng)站首頁 編程語言 正文
0.前言
之前在學(xué)springcloud的時(shí)候,提到有些項(xiàng)目還是使用zookeeper作為注冊(cè)中心。
因此決定掌握這個(gè)技能,但是本地為了測(cè)試而部署一套zookeeper集群還是比較麻煩的。
所以打算使用docker在本地上搭建zookeeper集群
1.前提
- 電腦里安裝過docker
- 了解部分docker命令
2.開始搭建
準(zhǔn)備好一個(gè)空目錄,需要建3個(gè)文件夾,然后每個(gè)文件夾里面建2個(gè)文件,如下所示:
.
├── zk1 (文件夾)
│ ├── myid (文件)
│ └── zoo.cfg (文件)
├── zk2(文件夾)
│ ├── myid(文件)
│ └── zoo.cfg(文件)
└── zk3(文件夾)
├── myid(文件)
└── zoo.cfg(文件)
解釋
文件 | ? | 文件里面內(nèi)容 |
---|---|---|
zk1/myid | Zookeeper第一個(gè)節(jié)點(diǎn)的id配置,只需要一個(gè)數(shù)字 | 100 |
zk1/zoo.cfg | Zookeeper第一個(gè)節(jié)點(diǎn)的配置信息 | 之后有個(gè)例子 |
zk2/myid | Zookeeper第二個(gè)節(jié)點(diǎn)的id配置,只需要一個(gè)數(shù)字 | 200 |
zk2/zoo.cfg | Zookeeper第二個(gè)節(jié)點(diǎn)的配置信息 | 之后有個(gè)例子 |
zk3/myid | Zookeeper第三個(gè)節(jié)點(diǎn)的id配置,只需要一個(gè)數(shù)字 | 300 |
zk3/zoo.cfg | Zookeeper第三個(gè)節(jié)點(diǎn)的配置信息 | 之后有個(gè)例子 |
創(chuàng)建zoo.cfg
3個(gè)zoo.cfg里面內(nèi)容是一樣的,如下所示
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行也是這個(gè)集群能否創(chuàng)建的關(guān)鍵
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
具體含義如下
參數(shù) | 含義 |
---|---|
server | 常量,這個(gè)不用改 |
A | 就是myid,在【開始搭建】的【解釋】里提到過的數(shù)字 |
B | 服務(wù)器地址,因?yàn)槎际潜镜丨h(huán)境搭建的,就是127.0.0.1 |
C | 信息交互端口,不用改,就2888挺好 |
D | 選舉端口,不用改,就3888挺好 |
3.docker搭建
當(dāng)3個(gè)文件夾,6個(gè)目錄創(chuàng)建好了以后,就可以使用命令進(jìn)行搭建了
1.docker創(chuàng)建網(wǎng)絡(luò)
創(chuàng)建docker網(wǎng)絡(luò),是為了保證3個(gè)容器可以互相通信
命令如下:其中network-zk-nb是自己取的,后面創(chuàng)建容器時(shí)會(huì)用到
docker network create network-zk-nb
2.啟動(dòng)第1個(gè)zk節(jié)點(diǎn)
如果是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:因?yàn)槔锩嬗玫搅?/,也就是相對(duì)目錄,所以你必須要在3個(gè)目錄所在的目錄下才能使用這條命令
3.啟動(dòng)第2個(gè)zk節(jié)點(diǎn)
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.啟動(dòng)第3個(gè)zk節(jié)點(diǎn)
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的集群環(huán)境搭建完畢
4.訪問節(jié)點(diǎn)
1.進(jìn)入zk第一個(gè)節(jié)點(diǎn)的docker容器內(nèi)部
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
進(jìn)入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的客戶端進(jìn)行訪問
zkCli.sh
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]
3.在zk中使用命令
ls /
至此,zk集群的搭建與使用就已經(jīng)完成,后面學(xué)習(xí)的就是使用java的方式來連接
原文鏈接:https://juejin.cn/post/7101328772770562056
相關(guān)推薦
- 2022-10-12 基于PyQt5實(shí)現(xiàn)狀態(tài)欄(statusBar)顯示和隱藏功能_python
- 2022-03-21 C++遞歸實(shí)現(xiàn)選擇排序算法_C 語言
- 2022-02-16 向一組數(shù)組對(duì)象中,添加新的屬性值。和判斷這個(gè)數(shù)組對(duì)象中,某個(gè)屬性是否值都一樣
- 2024-01-11 使用@RestController跳轉(zhuǎn)頁面
- 2022-07-18 CSS基礎(chǔ)語法和盒模型
- 2023-07-22 SpringBoot中@Cacheable如何使用
- 2022-09-09 詳解C語言中動(dòng)態(tài)內(nèi)存管理及柔性數(shù)組的使用_C 語言
- 2022-10-22 Python基礎(chǔ)Lists和tuple實(shí)例詳解_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支