docker方式搭建zookeeper集群
2023-09-14 08:57:47 时间
方式一:单台服务器搭建zookeeper集群
一、取镜像,本篇以3.4.10为例
docker pull zookeeper #拉取最新的镜像 docker pull zookeeper:3.4.10 # 拉取指定版本
二、创建镜像,启动服务
docker run -d --name zk01 -p 2181:2181 --ip 10.88.0.19 zookeeper:3.4.10 docker run -d --name zk02 -p 2182:2181 --ip 10.88.0.20 zookeeper:3.4.10 docker run -d --name zk03 -p 2183:2181 --ip 10.88.0.21 zookeeper:3.4.10
注意:
- 宿主机要用不同的端口去映射zookeeper的2181端口,否则从第二个容器开始会启动失败
- 还有就是ip地址要指定设置成静态,否则后面容器停了之后再次启动ip地址可能会有改变,这样导致集群搭建失败
- 如果失败请看第三部网络配置问题
三、指定容器IP的注意事项
Docker创建容器时默认采用bridge网络,自行分配ip,不允许自己指定。在实际部署中,我们需要指定容器ip,不允许其自行分配ip,尤其是搭建集群时,固定ip是必须的。我们可以创建自己的bridge网络 : mynet,创建容器的时候指定网络为mynet并指定ip即可。
1.查看网络模式
[root@k8s-node-1 ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 3dfc7f4e8674 bridge bridge local 459fab2289a4 host host local aeaff244696b none null local
2.创建一个新的bridge网络
docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.1.1 mynet
3.查看网络信息
docker network inspect mynet
4.创建容器并指定容器ip
// 建议用此命令运行容器
docker run -e TZ="Asia/Shanghai" --privileged -itd -h zookeeper01.com --name zk01.com --network=mynet -p 2181:2181 --ip 172.18.12.1 zookeeper:3.4.10
docker run -e TZ="Asia/Shanghai" --privileged -itd -h zookeeper01.com --name zk01.com --network=mynet -p 2182:2181 --ip 172.18.12.2 zookeeper:3.4.10
docker run -e TZ="Asia/Shanghai" --privileged -itd -h zookeeper01.com --name zk01.com --network=mynet -p 2183:2181 --ip 172.18.12.3 zookeeper:3.4.10
解释说明:
- --privileged 可以有很多权限
- -e TZ="Asia/Shanghai" 时区
- -h zk01.com 主机名
- --name zk01 容器名字
- -i :开启标准输入
- -it :合起来实现和容器交互的作用,运行一个交互式会话 shell
- -d : 后台运行
- -p 宿主机与容器映射端口
5.查看容器ip
docker inspect 容器id
如果网络段被占用,删除网络
docker network disconnect --force <网络模式> <容器名>
四、 修改zookeeper配置
1、修改zoo.cfg
[root@k8s-node-1 ~]# docker exec -it zk01 /bin/bash bash-4.3# vi /conf/zoo.cfg
将如下配置内容写入zoo.cfg的最后
server.1=172.18.12.1:2888:3888 server.2=172.18.12.2:2888:3888 server.3=172.18.12.3:2888:3888
注意:
- 每一行后面都不能有空格,ip或端口都不能有错误。任意一个节点异常,都会导致整个集群的异常
- server.1 此处的1或2或3,是每个zookeeper节点的myid的值
注意:
请注意,如果你是在Linux环境下直接搭建zookeeper,请修改本机所在节点的ip为0.0.0.0
例如我当前节点是server.1,则ip修改为0.0.0.0(非docker环境),如下配置:
server.1=0.0.0.0:2888:3888;2181 server.2=10.88.0.20:2888:3888;2181 server.3=10.88.0.21:2888:3888;2181
2、修改myid
bash-4.3# vi /data/myid
注意:
- 前面已经说了,myid里面写的是数字,每个节点的数字不要重复
- zk01的myid是1,zk02的myid是2,zk03的myid是3
所有zookeeper节点的上述两个配置都配置完毕,接下来就是重启docker容器。
五、重启docker容器
使用exit命令退出容器后,重启三个docker服务
bash-4.3# exit exit [root@k8s-node-1 ~]# docker restart zk01 zk02 zk03
六、检查集群状态
分别进入三个容器
[root@k8s-node-1 ~]# docker exec -it zk01 /bin/bash bash-4.3# /zookeeper-3.4.10/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Mode: leader
[root@k8s-node-1 ~]# docker exec -it zk02 /bin/bash bash-4.3# /zookeeper-3.4.10/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Mode: follower
[root@k8s-node-1 ~]# docker exec -it zk03 /bin/bash bash-4.3# /zookeeper-3.4.10/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Mode: follower
可以看到zk01是leader,zk02和zk03是follower
结束!
相关文章
- Docker中快速部署Zookeeper服务
- docker 权限问题 Got permission denied while trying to connect to the Docker daemon socket at 。。。「建议收藏」
- Docker将镜像推送至镜像仓库
- 普罗米修斯监控系统搭建(MAC环境基于Docker)「建议收藏」
- 【重识云原生】第六章容器6.1.11节——docker-compose容器编排
- Docker | 自定义网络(网关、子网地址)
- 两小时 Docker 速成 - Getting Started
- 【Docker】使用docker安装部署NextCloud私人网盘
- 【已解决】Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon runnin
- 【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?
- Docker服务的重启服务命令(systemctl restart docker)
- Docker查看本地所有的镜像命令(docker images)
- 【Docker 系列】docker 学习 五,容器数据卷
- 【Docker 系列】docker 学习六,探究一下数据卷容器
- 【Docker 系列】docker 学习八,Docker 网络
- 单细胞转录组实战06: pySCENIC转录因子分析(docker)
- 【教程】全流程Ubuntu安装Docker版Gitlab并初始化管理员
- Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running
- iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destinatio
- 使用Docker安装Redis并配置成功(docker安装redis)
- Docker-优缺点分析
- docker实战-dockerfile制作镜像
- docker-Docker Registry私有仓库
- docker managed volume – 每天5分钟玩转 Docker 容器技术(40)
- 学容器必须懂 bridge 网络 – 每天5分钟玩转 Docker 容器技术(32)
- 快速安装Linux上的Docker(linux安装docker)