集群安装
-
集群规划
思考如果是10台服务器,需要部署多少台服务器呢(提示建议单数)
使用docker搭建Zookeeper集群(这里是三个,具体可以修改对应参数)
-
创建网卡(zookeeper的)ip可以根据需求自定义
docker network create my-zookeeper --subnet 172.38.0.0/16
-
使用脚本创建创建zoo.cfg
for port in $(seq 1 3);\ do \ mkdir -p /azang_data/zookeeper-${port} touch /azang_data/zookeeper-${port}/zoo.cfg cat << EOF >>/azang_data/zookeeper-${port}/zoo.cfg clientPort=2181 dataDir=/data dataLogDir=/datalog tickTime=4000 initLimit=10 syncLimit=20 autopurge.snapRetainCount=3 autopurge.purgeInterval=0 maxClientCnxns=60 server.1=172.38.0.11:2888:3888 server.2=172.38.0.12:2888:3888 server.3=172.38.0.13:2888:3888 EOF mkdir -p /azang_data/zookeeper-${port}/data touch /azang_data/zookeeper-${port}/data/myid cat << EOF >>/azang_data/zookeeper-${port}/data/myid ${port} EOF done
-
配置参数解读
server.1=172.38.0.1${port}:3888
server.A=B.C.D
- A是一个数字,表示这个是第几号服务器;
集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取池文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底哪个是server- B是这个服务器的地址.
- C是这个服务器Follower与集群中的Leader服务器交换信息的端口.
- D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口.
-
使用脚本启动docker容器
# 接下来我们启动docker容器 for port in $(seq 1 3);\ do \ docker run -d -p 218${port}:2181 -p 288${port}:2888 -p 388${port}:3888 \ --name zk-${port} --net my-zookeeper --ip 172.38.0.1${port} -v /azang_data/zookeeper-${port}/zoo.cfg:/conf/zoo.cfg \ -v /azang_data/zookeeper-${port}/data:/data --restart=always zookeeper:latest done
-
查看是否成功
root@azang405:/azang_data/zookeeper-1# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1d9718594b03 zookeeper:latest "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 8080/tcp, 0.0.0.0:2183->2181/tcp, :::2183->2181/tcp, 0.0.0.0:2883->2888/tcp, :::2883->2888/tcp, 0.0.0.0:3883->3888/tcp, :::3883->3888/tcp zk-3 2fcdb39e9ce9 zookeeper:latest "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 8080/tcp, 0.0.0.0:2182->2181/tcp, :::2182->2181/tcp, 0.0.0.0:2882->2888/tcp, :::2882->2888/tcp, 0.0.0.0:3882->3888/tcp, :::3882->3888/tcp zk-2 f04635a2c8a3 zookeeper:latest "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 8080/tcp, 0.0.0.0:2881->2888/tcp, :::2881->2888/tcp, 0.0.0.0:3881->3888/tcp, :::3881->3888/tcp zk-1```
其他ZooKeeper文章
ZooKeeper学习笔记(一): ZooKeeper是什么能用来做什么
ZooKeeper学习笔记(二): Zookeeper的安装与启动(Docker)
ZooKeeper学习笔记(三): Zookeeper的五大参数解读
ZooKeeper学习笔记(四): Docker搭建ZooKeeper集群(这里是三个,具体可以修改对应参数)脚本
ZooKeeper学习笔记(五): ZooKeeper集群选举机制
ZooKeeper学习笔记(六): 客户端命令行操作
ZooKeeper学习笔记(七):ZooKeeper依赖-API方法
ZooKeeper学习笔记(八):服务器动态上下线原理