Zookeeper集群部署

操作系统:Centos7.4

JDK版本:jdk1.8.0_23

Zookeeper版本:zookeeper-3.4.12

1.关闭防火墙

[root@localhost data]# firewall-cmd --state
running
[root@localhost data]# systemctl stop firewalld.service
[root@localhost data]# systemctl disable firewalld.service

stop是临时关闭

disable是永久关闭

2.修改配置文件

  • 创建配置文件
[root@localhost conf]# cp /usr/local/zookeeper-3.4.12/zoo_sample.cfg ./zoo.cfg
  • 配置环境变量
[root@localhost data]# vim /etc/profile

  在尾部更改为:

export JAVA_HOME=/usr/local/jdk1.8.0_231
export ZK_HOME=/usr/local/zookeeper-3.4.12
export PATH=$JAVA_HOME/bin:$ZK_HOME/bin:$PATH

  使更改生效:

source /etc/profile
  • 创建路径,写入serverID

[root@localhost conf]# mkdir -p /usr/local/zookeeper-3.4.12/data
[root@localhost conf]# mkdir -p /usr/local/zookeeper-3.4.12/log
[root@localhost conf]# echo 1 > /usr/local/zookeeper-3.4.12/data/myid
[root@localhost conf]# echo 2 > /usr/local/zookeeper-3.4.12/data/myid
[root@localhost conf]# echo 3 > /usr/local/zookeeper-3.4.12/data/myid

  • 修改zoo.cfg内容:
#Zookeeper的时间单位,不配置,默认值3000,单位ms
tickTime=2000
#节点初始化时间,follower启动过程中与leader节点进行数据同步的时间,单位为tickTime,正整数。 initLimit=10
#心跳最大延迟周期,leader与follower进行心跳检测的最大延时时间,在此时间内是否
#收到follower节点心跳检测响应来确定follower节点是否存活,单位为tickTime,正整数。 syncLimit
=5
#zookeeper保存数据的目录 dataDir=/usr/local/zookeeper-3.4.12/data
#日志目录选项,若未配置,默认使用鹤dataDir相同的目录 dataLogDir
=/usr/local/zookeeper-3.4.12/log
#客户端连接Zookeeper集群中节点的端口号,Zookeeper监听此端口接收客户端的访问请求。 clientPort
=2181

#配置格式:server.id=host:port:port
#1.不能有相同id的节点,要与对应节点data目录下myid文件中值相同。
#2.host为对应节点的IP地址。
#3.前一个port代表用于节点之间通信,后一个用于选举leader主节点。 server.
1=192.168.43.11:2888:3888 server.2=192.168.43.12:2888:3888 server.3=192.168.43.13:2888:3888

#从3.4.0开始,zookeeper提供了自动清理snapshot和事务日志的功能,通过配置如下两个参数实现定时清理。
#指定清理频率,单位为小时,值为1或更大的整数,默认是0,表示不开启自己清理功能。
#autopurge.purgeInterval 
#与上面参数搭配使用,指定了需要保留的文件数目,默认为3
#autopurge.snapRetainCount

也可以配置好一台,发送到其他两台上:

[root@localhost data]# scp -r /usr/local/zookeeper-3.4.12 root@192.168.43.12:/usr/local/
[root@localhost data]# scp -r /usr/local/zookeeper-3.4.12 root@192.168.43.13:/usr/local/
scp -r local_folder remote_username@remote_ip:remote_folder 

3.启动zookeeper集群

  • 启动:
[root@localhost data]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
  • 查看启动状态: 
[root@localhost bin]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower

 

4.选主机制

假如有5台服务器,每台服务器均没有数据,它们的编号分别是1,2,3,4,5,按编号依次启动,它们的选择举过程如下:

  • 服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking(选举状态)。
  • 服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号大所以服务器2胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是LOOKING。
  • 服务器3启动,给自己投票,同时与之前启动的服务器1,2交换信息,由于服务器3的编号最大所以服务器3胜出,此时投票数正好大于半数,所以服务器3成为领导者,服务器1,2成为小弟。
  • 服务器4启动,给自己投票,同时与之前启动的服务器1,2,3交换信息,尽管服务器4的编号大,但之前服务器3已经胜出,所以服务器4只能成为小弟。
  • 服务器5启动,后面的逻辑同服务器4成为小弟。

关于选主机制请参考原博:https://www.cnblogs.com/shuaiandjun/p/9383655.html

zookeeper-3.4.12
posted @ 2020-01-16 15:40  芬乐  阅读(248)  评论(0编辑  收藏  举报