您的位置:首页 > 其它

ZooKeeper集群

2017-01-08 11:30 141 查看
1、环境说明

ZooKeeper-server:10.10.36.126

dubbo-admin-server:10.10.36.128

ZooKeeper1:2181,2881,3881

ZooKeeper2:2182,2882,3882

ZooKeeper3:2183,2883,3883

2、ZooKeeper安装

tar -zxvf zookeeper-3.4.9.tar.gz

mv zookeeper-3.4.9 ./zookeeper/node-01

mv zookeeper-3.4.9 ./zookeeper/node-02

mv zookeeper-3.4.9 ./zookeeper/node-03

 

cd node-01

mkdir data

mkdir logs

vi ./data/myid

内容:

1

(node-02中为2,node-03中为3)

cp ./conf/zoo_sample.cfg ./conf/zoo.cfg

vi ./confzoo.cfg

dataDir=/home/wangzi/soft/zookeeper/node-01/data

dataLogDir=/home/wangzi/soft/zookeeper/node-01/logs

clientPort=2181

server.1=10.10.36.126:2881:3881

server.2=10.10.36.126:2882:3882

server.3=10.10.36.126:2883:3883

node-02修改如下:

dataDir=/home/wangzi/soft/zookeeper/node-02/data

dataLogDir=/home/wangzi/soft/zookeeper/node-02/logs

clientPort=2182

server.1=10.10.36.126:2881:3881

server.2=10.10.36.126:2882:3882

server.3=10.10.36.126:2883:3883

node-03修改:

dataDir=/home/wangzi/soft/zookeeper/node-03/data

dataLogDir=/home/wangzi/soft/zookeeper/node-03/logs

clientPort=2183

server.1=10.10.36.126:2881:3881

server.2=10.10.36.126:2882:3882

server.3=10.10.36.126:2883:3883

参数说明: 

tickTime=2000

tickTime 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每

个 tickTime 时间就会发送一个心跳。
initLimit=10

initLimit 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper

服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长

能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服

务器还没有收到客户端的返回信息,那么
4000
表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
syncLimit=5

syncLimit 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少

个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒。

dataDir=/home/wusc/zookeeper/node-01/data

dataDir顾名思义就是Zookeeper保存数据的目录,默认情况下Zookeeper将写数据的日志文件也保存在

这个目录里。
clientPort=2181

clientPort 这个端口就是客户端(应用程序)连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端

口接受客户端的访问请求。

server.A=B:C:D

A 是一个数字,表示这个是第几号服务器(与./data/myid中的内容一致);

B 是这个服务器的 IP 地址(或者是与 IP 地址做了映射的主机名);

C 第一个端口用来集群成员的信息交换,表示这个服务器与集群中的 Leader 服务器交换信息的端口;

D 是在 leader 挂掉时专门用来进行选举 leader 所用的端口。

3、配置防火墙

打开2181,2182,2183,2881,2882,2883,3881,3882,3883端口

firewall-cmd --zone=public --add-port=2181/tcp --permanent

... ...

firewall-cmd --reload

4、配置dubbo管控台

dubbo管控台的安装已在之前的博客中说明,此处不再赘述

vi ./dubbo-admin-tomcat/webapps/ROOT/WEB-INF/dubbo.properties 

修改内容如下:

dubbo.registry.address=zookeeper://10.10.36.126:2181?backup=10.10.36.126:2182,10.10.36.126:2183

5、启动zookeeper

./bin/zkServer.sh start

jps

输出如下:

4563 QuorumPeerMain

4635 Jps

4604 QuorumPeerMain

4526 QuorumPeerMain

可以得知zookeeper启动成功

6、配置服务提供者

<dubbo:registry protocol="zookeeper" address="10.10.36.126:2181,10.10.36.126:2182,10.10.36.126:2183" />

7、查看各zookeeper的状态信息

$ ./node-01/bin/zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /home/wangzi/soft/zookeeper/node-01/bin/../conf/zoo.cfg

Mode: follower

$ ./node-02/bin/zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /home/wangzi/soft/zookeeper/node-02/bin/../conf/zoo.cfg

Mode: follower

$ ./node-03/bin/zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /home/wangzi/soft/zookeeper/node-03/bin/../conf/zoo.cfg

Mode: leader

可以得知node-03是主节点,而01和02是从节点

这时,关闭node-03,服务运行正常,再次查看状态

$ ./node-01/bin/zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /home/wangzi/soft/zookeeper/node-01/bin/../conf/zoo.cfg

Mode: follower

$ ./node-02/bin/zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /home/wangzi/soft/zookeeper/node-02/bin/../conf/zoo.cfg

Mode: leader

此时node-02是主节点,node-01是从节点,服务运行正常

如此时关闭node-02,查看01的状态

$ ./node-01/bin/zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /home/wangzi/soft/zookeeper/node-01/bin/../conf/zoo.cfg

Error contacting service. It is probably not running

node-01的状态已经查询不到,但服务依然运行正常,这种情况下,如果重启dubbo管控台,将启动不成功,处于等待状态。

开启node-02或node-03,node-01的状态立马可以查询到,并且dubbo管控台启动成功。

注:zookeeper集群必须半数以上处于正常状态时,才可以推选出主节点,此时的集群才是处于高可用状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: