原文链接:
说明:
我在自己电脑上开的3台Linux虚拟机,分别是: 192.168.1.71、 192.168.1.81、 192.168.1.91;
各个虚拟机中提前装好jdk(我使用的jdk1.8.0_161)
1.下载zk最新稳定版本(我的是3.4.12)
下载地址:
2.上传到服务器(192.168.1.71),并解压:
3.cd到zk根目录,进入conf,创建zoo.cfg配置文件:
tickTime:心跳时间,单位为ms;
dataDir:数据存放目录,存储内存数据库快照的位置,如果没有配置dataLogDir,也会存储数据库更新的事务日志, 配置完后要创建对应目录;
clientPort:端口号;
initLimit:当follower(从)最初与leader(主)建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。initLimit配置follower与leader之间建立连接后进行同步的最长时间。 单位为tickTime,例如这里配置了5表示超时时间为5*2000 ms
syncLimit:follower和leader之间发送消息,请求和应答的最大时间长度, 单位为tickTime,例如这里配置了2表示超时时间为2*2000 ms
server.71:表示集群中的71服务器,与dataDir中的myid文件内容一致,例如在这里myid文件中的内容为:71
192.168.1.71:2888:3888:前面为zk服务器的ip,第一个port端口号表示主从通讯使用的端口号,第二个port端口号表示选主时使用的端口号;
4.cd到dataDir目录,创建myid文件
文件内容只有一行,就是上面配置的server.71里面的71(81、91)
记得要与该服务器对应的配置项对应
5.类似的,配置好另外2台zk
记得关闭防火墙:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
6.启动zk
在bin目录下: ./ zkServer.sh start
或者使用 ./ zkServer.sh start-foreground 可以查看在启动时看到日志(个人喜欢这个)
注意:
1.启动的时候会报NoRouteToHost异常,这是因为集群其他机器还没有启动的缘故,挨着全部启动完毕,就没有此异常了。
2.不要用Ctrl+c切出控制台,否则会关闭zk(至少在我测试的环境中是这样)
7.查看zk状态
在bin目录下 : ./ zkServer.sh status
Mode:当前zk的角色(follower或leader)
8.链接客户端
在bin目录下 : ./ zkCli.sh -server 节点1ip:端口, 节点2ip:端口, 节点3ip:端口
回车后看到如下:
创建节点:create /testNode wjy
获取节点内容:get /testNode
9.关闭zk
在bin目录下 : ./ zkServer.sh stop