ip | 端口 | 服务id | 集群端口 |
127.0.0.1 | 3181 | 1 | 2887:3887 |
127.0.0.1 | 3182 | 2 | 2888:3888 |
127.0.0.1 | 3183 | 3 | 2889:3889 |
官网下载
Apache ZooKeeperhttps://zookeeper.apache.org/releases.html
创建文件为zk-cluster将下载的文件放在里面
2. 在data文件夹中创建一个命名myid的文件并且写入服务id: 1
3.进入conf目录中复制一份zoo_sample.cfg为zoo.cfg
4.打开zoo.cfg修改配置
- tickTime=2000
- initLimit=10
- syncLimit=5
- dataDir=data
- dataLogDir=log
- clientPort=3181
- #设置集群信息,单机集群得情况下修改端口
- server.1=127.0.0.1:2887:3887
- server.2=127.0.0.1:2888:3888
- server.3=127.0.0.1:2889:3889
initLimit
ZooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程为follower。
当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。initLimit配置follower与leader之间建立连接后进行同步的最长时间。
syncLimit
配置follower和leader之间发送消息,请求和应答的最大时间长度。
tickTime
tickTime则是上述两个超时配置的基本单位,例如对于initLimit,其配置值为5,说明其超时时间为 2000ms * 5 = 10秒。
server.id=host:port1:port2
其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。
host是该zk进程所在的IP地址,port1表示follower和leader交换消息所使用的端口,port2表示选举leader所使用的端口。
dataDir
其配置的含义跟单机模式下的含义类似,不同的是集群模式下还有一个myid文件。myid文件的内容只有一行,且内容只能为1 - 255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id。
注意
如果仅为了测试部署集群模式而在同一台机器上部署zk进程,server.id=host:port1:port2配置中的port参数必须不同。但是,为了减少机器宕机的风险,强烈建议在部署集群模式时,将zk进程部署不同的物理机器上面。
5.复制两份原先配置好的zookeeper1,如下
6.修改zookeeper2,3文件加中data文件中的myid,分别改成2,3既可
7.修改zookeeper2,3 conf 文件夹中的zoo.cfg端口既可
zookeeper2
clientPort=3182
zookeeper3
clientPort=3183
8.在zk-cluster目录下创建启动脚本(根据自己的zk版本修改文件夹名)
Windows启动脚本run-all-zk.bat
- cd zookeeper1-3.4.12
- start /MIN "zk1" "bin\zkServer.cmd"
- cd ..
- cd zookeeper2-3.4.12
- start /MIN "zk2" "bin\zkServer.cmd"
- cd ..
- cd zookeeper3-3.4.12
- start /MIN "zk3" "bin\zkServer.cmd"
LIunx启动脚本run-all-zk.sh
- cd zookeeper1-3.4.12
- bin/zkServer.sh restart
- cd ..
- cd zookeeper2-3.4.12
- bin/zkServer.sh restart
- cd ..
- cd zookeeper3-3.4.12
- bin/zkServer.sh restart
启动成功后的样子
9.链接集群测试,打开zookeeper1链接
bin\zkCli.cmd -server 127.0.0.1:3181,127.0.0.1:3182,127.0.0.1:3183
自此完。
需要的话可以下载我已经配置可以直接拿来运行包含zkui和更多脚本。
开箱即用Zookeeper单机集群,已配置好集群和写好批量启动脚本,支持windows和liunx平台。-Java文档类资源-CSDN下载