Zookeeper集群搭建

一、服务器准备,三台服务器,部署三个zk节点

192.168.95.128  node-001

192.168.95.129  node-002

192.168.95.130  node-003

二、安装部署(node-001),其他服务器进行相同步骤即可

1. zk版本

zookeeper-3.4.10.tar.gz

2. 解压

[root@node-001 opt]# pwd
/opt
[root@node-001 opt]# tar -zxvf zookeeper-3.4.10.tar.gz

3. 配置

[root@node-001 conf]# pwd
/opt/zookeeper-3.4.10/conf
[root@node-001 conf]# cp zoo_sample.cfg zoo.cfg
[root@node-001 conf]# vi zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/opt/zookeeper-3.4.10/data
dataLogDir=/opt/zookeeper-3.4.10/logs
# the port at which the clients will connect
# 自定义端口
clientPort=2181
server.1=192.168.95.128:2888:3888
server.2=192.168.95.129:2888:3888
server.3=192.168.95.130:2888:3888

4. 上面3中各参数含义如下:

#server.1 这个1是服务器的标识也可以是其他的数字, 表示这个是第几号服务器,用来标识服务器,这个标识要写到快照目录下面myid文件里
#IP为集群里的IP地址,第一个端口是master和slave之间的通信端口,默认是2888,第二个端口是leader选举的端口,
集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888

#tickTime:
这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
#initLimit:
这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 
服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)
长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
#syncLimit:
这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10秒
#dataDir:
快照日志的存储路径
#dataLogDir:
事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多
#clientPort:
这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。修改他的端口改大点

5. 创建上面配置的日志目录

dataDir=/opt/zookeeper-3.4.10/data
dataLogDir=/opt/zookeeper-3.4.10/logs

[root@node-001 zookeeper-3.4.10]# mkdir data
[root@node-001 zookeeper-3.4.10]# mkdir logs

6. 在dataDir下面创建myid(三台服务就这一步不一样,根据server.1   2  3对应值)

分别在三台主机的 dataDir 路径下创建一个文件名为 myid 的文件,文件内容为该 zk 节点的编号,分别对应值为1,2,3

7.  启动三台服务器

[root@node-001 bin]# pwd
/opt/zookeeper-3.4.10/bin
[root@node-001 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@node-001 bin]# 

8. 检查集群是否正常,查询集群状态。 由下可知 node-002被选举为了leader

[root@node-001 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

[root@node-002 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader

[root@node-003 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

9. 测试集群高可用,停掉node-002  leader节点,再查询另外两台的状态。由下可知node-003被选举为了leader

[root@node-002 bin]# ./zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

[root@node-001 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

[root@node-003 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader

 

三、问题

1. 查询集群状态报错,报错信息如下:

Error contacting service. It is probably not running.

解决方案:

1.  防火墙开启端口

[root@node-001 bin]# firewall-cmd --zone=public --add-port=2888/tcp --permanent
success
[root@node-001 bin]# firewall-cmd --zone=public --add-port=3888/tcp --permanent
success
[root@node-001 bin]# firewall-cmd --zone=public --add-port=2181/tcp --permanent
success
[root@node-001 bin]# firewall-cmd --reload
success

2. 上面用的是copy  zoo配置文件,不能同时存在zoo_sample.cfg和zoo.cfg文件

删除sample文件

[root@node-002 bin]# rm ../conf/zoo_sample.cfg

3. 查询日志,[root@node-001 bin]# cat zookeeper.out

从上面可以看出,配置文件中端口2181后面有无效的注释代码影响到了正常启动。修改后即可。步骤3中的配置是已修改后的。直接用即可。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值