docker搭建Zookeeper集群的方法步骤
目录
- 0.前言
- 1.前提
- 2.开始搭建
- 解释
- 创建zoo.cfg
- 3.docker搭建
- 1.docker创建网络
- 2.启动第1个zk节点
- 3.启动第2个zk节点
- 4.启动第3个zk节点
- 4.访问节点
- 1.进入zk第一个节点的docker容器内部
- 2.使用zk的客户端进行访问
- 3.在zk中使用命令
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的方式来连接
栏 目:其它服务器
本文地址:https://zz.feitang.co/server/31036.html
您可能感兴趣的文章
- 01-07Tomcat部署Bolo动态博客
- 01-07图文详解nginx日志切割的实现
- 01-07如何解决swarm docker 端口不通问题
- 01-07详解nginx location指令
- 01-07如何解决docker http 500错误问题
- 01-07windows server 2008安装配置DNS服务器
- 01-07Linux上搭载Nginx负载均衡配置使用案例详解
- 01-07NGINX 权限控制文件预览和下载的实现原理
- 01-07Nginx防盗链与服务优化配置的全过程
- 01-07使用 Apache 反向代理的设置技巧


阅读排行
推荐教程
- 12-23linux中ftp无法访问怎么办
- 12-11docker存储目录迁移示例教程
- 12-10docker start启动容器后仍然exit状态的解决
- 12-10Linux下如何安装Logstash
- 01-05Shell脚本去重的几种方法实例
- 12-22kvm虚拟机配置NAT端口转发的实现方法
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法




