版权声明:
作者:WangJY
出处:http://www.imrookie.cn
本文版权归作者所有,转载请指明出处,否则保留追究法律责任的权利。
说明:
我在自己电脑上开的3台Linux虚拟机,分别是:192.168.1.71、192.168.1.81、192.168.1.91;
各个虚拟机中提前装好jdk(我使用的jdk1.8.0_161)
1.下载zk最新稳定版本(我的是3.4.12)
下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/
2.上传到服务器(192.168.1.71),并解压:
tar -xzf zookeeper-3.4.12.tar.gz
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(使用./zkServer.sh start-foreground启动是在前台运行的,关闭当前会话则会关闭zk服务)
7.查看zk状态
在bin目录下:./zkServer.sh status
Mode:当前zk的角色(follower或leader)
Mode:follower表示该zk为从节点
Mode:follower表示该zk为主节点
8.链接客户端
在bin目录下:./zkCli.sh -server 节点1ip:端口,节点2ip:端口,节点3ip:端口
回车后看到如下:
创建节点:create /testNode wjy
获取节点内容:get /testNode
9.关闭zk
在bin目录下:./zkServer.sh stop