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
人怂胆子小,手拿大刀跑。