zookeeper 集群
1、zookeeper 集群说明
initLimit 是Zookeeper用它来限定集群中的Zookeeper服务器连接到Leader的时限
syncLimit 限制了follower服务器与leader服务器之间请求和应答之间的时限
服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
这个配置项的书写格式比较特殊,规则如下:server.N=YYY:A:B 其中,
N表示服务器编号,
YYY表示服务器的IP地址,
A为LF通信端口,表示该服务器与集群中的leader交换的信息的端口。
B为选举端口,表示选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader)
一般来说,集群中每个服务器的A端口都是一样,每个服务器的B端口也是一样。
下面是一个集群的例子:
server.0=233.34.9.144:2008:6008
server.1=233.34.9.145:2008:6008
server.2=233.34.9.146:2008:6008
server.3=233.34.9.147:2008:6008
但是当所采用的为伪集群时,IP地址都一样,只能是A端口和B端口不一样。
下面是一个伪集群的例子:
server.0=127.0.0.1:2008:6008
server.1=127.0.0.1:2007:6007
server.2=127.0.0.1:2006:6006
server.3=127.0.0.1:2005:6005
2、搭建集群
2.1 拷贝赋值
zookeeper-3.4.14.tar.gz解压后拷贝到/opt目录下并重新名为zk01。
[root@localhost myzookeeper]# mv zookeeper-3.4.14.tar.gz /opt/
[root@localhost opt]# tar -zxvf zookeeper-3.4.14.tar.gz
[root@localhost opt]# mv zookeeper-3.4.14 zk01
2.2 在zk01中的创建mydata文件夹
[root@localhost zk01]# mkdir mydata
2.3 新建zoo.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
2.4 修改zoo.cfg配置文件
server.1=127.0.0.1:2991:3991
server.2=127.0.0.1:2992:3992
server.3=127.0.0.1:2993:3993
2.5 创建myId文件
在zk01的 mydata下面创建myid的文件,在里面写入server的数字
表示1号服务器
# vim myid
里面写1 然后退出并保存
为了确保zk01 正确,我们可以启动测试一下
关闭当前的zk01 服务
[root@localhost opt]# kill -9 4060
2.6 将zk01 赋值两份分别为zk02,zk03
[root@localhost opt]# cp -r zk01 zk02
[root@localhost opt]# cp -r zk01 zk03
2.7 修改zk02,zk03的zoo.cfg,myid配置文件
#zk02
[root@localhost opt]# vim zk02/conf/zoo.cfg
[root@localhost opt]# vim zk02/mydata/myid
#zk03
[root@localhost opt]# vim zk03/conf/zoo.cfg
[root@localhost opt]# vim zk03/mydata/myid
2.8 启动集群
# vim startup.sh
/opt/zk01/bin/zkServer.sh start
/opt/zk02/bin/zkServer.sh start
/opt/zk03/bin/zkServer.sh start
:wq
# chmod +x startup.sh
./startup.sh
查看进程
# ps –ef |grep zookeeper
2.9 使用客户端链接集群
[root@localhost opt]# ./zk01/bin/zkCli.sh -server 127.0.0.1:2191
在客户端2191 中添加节点
在客户端2192中查询
2.10 查看节点的状态
[root@localhost opt]# ./zk01/bin/zkServer.sh status
2.11 集群主机宕机情况测试
测试1:主机宕机./zk02/bin/zkServer.sh stop[root@localhost opt]# ./zk01/bin/zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /opt/zk01/bin/../conf/zoo.cfgMode: follower[root@localhost opt]# ./zk02/bin/zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /opt/zk02/bin/../conf/zoo.cfgError contacting service. It is probably not running.[root@localhost opt]# ./zk03/bin/zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /opt/zk03/bin/../conf/zoo.cfgMode: leader[root@localhost opt]# 3号上位!create /test01 test011,3都有数据。
测试2:主机活了./zk02/bin/zkServer.sh start[root@localhost opt]# ./zk02/bin/zkServer.sh startZooKeeper JMX enabled by defaultUsing config: /opt/zk02/bin/../conf/zoo.cfgStarting zookeeper ... STARTED[root@localhost opt]# ./zk01/bin/zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /opt/zk01/bin/../conf/zoo.cfgMode: follower[root@localhost opt]# ./zk02/bin/zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /opt/zk02/bin/../conf/zoo.cfgMode: follower[root@localhost opt]# ./zk03/bin/zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /opt/zk03/bin/../conf/zoo.cfgMode: leader[root@localhost opt]# 查看2号机是否有数据同步?[zk: 127.0.0.1:2192(CONNECTED) 0] ls /[zookeeper, test, test01]