前言:
本篇文章针对于2020秋季学期的复习操作,一是对该学期的巩固,二是让老师知道他的努力没有白费,同时,在此感谢徐老师对我们的精心教导…
本次需要的材料
zookeeper-3.4.10.tar.gz
官网→https://zookeeper.apache.org/
北京理工学院下载→http://mirror.bit.edu.cn/apache/zookeeper/
本人网盘下载→https://pan.baidu.com/s/1ab–2h8fkUDTTzUC5UGFVA
→t123
前提
基于大数据学习之zookeeper单机版操作
初始的节点必须是基数台→可能出现brainSplit(脑裂)
投票规则:
a)自己给自己先投一票
b)除开自己,必须再投一票
c)那个follower角色的zkServer
获得的票数>=zk集群节点数/2 +1 (3/2+1 = 2)
待到所有的票数投完之后,票数最多的follower当选为leader
大致步骤
①同步环境变量到各个节点
②修改zoo.cfg
③zk目录下新建data目录→存放zk数据
④zk/data/下绑定当前机器的zk-id
⑤同步/opt/zk/到各个节点
⑥source生效环境变量
⑦修改其他节点的zk-id
⑧启动各个节点的zk服务
⑨测试
实操
①同步环境变量到各个节点
②修改zoo.cfg
[root@Mymaster ~]# cd /opt/zk/conf/
[root@Mymaster conf]# vim zoo.cfg
在最后添加如下信息
③zk目录下新建data目录→存放zk数据
root@Mymaster conf]# cd
[root@Mymaster ~]# cd /opt/zk/
[root@Mymaster zk]# mkdir data
④zk/data/下绑定当前机器的zk-id
[root@Mymaster zk]# cd data
[root@Mymaster data]# echo 201 > myid
[root@Mymaster data]# cat myid
201
[root@Mymaster data]#
⑤同步/opt/zk/到各个节点
[root@Mymaster ~]# scp -r /opt/zk/ root@Myslave01:/opt
.......................................................
[root@Mymaster ~]# scp -r /opt/zk/ root@Myslave02:/opt
.......................................................
[root@Mymaster ~]# ssh Myslave01 ls /opt/
hadoop
jdk
soft
zk
[root@Mymaster ~]# ssh Myslave02 ls /opt/
hadoop
jdk
soft
zk
[root@Mymaster ~]#
⑥source生效环境变量
[root@Mymaster ~]# source /etc/profile.d/bigdata-etc.sh
[root@Mymaster ~]# ssh Myslave01 source /etc/profile.d/bigdata-etc.sh
[root@Mymaster ~]# ssh Myslave02 source /etc/profile.d/bigdata-etc.sh
[root@Mymaster ~]#
⑦修改其他节点的zk-id
[root@Mymaster ~]# ssh Myslave01 'echo 202 > /opt/zk/data/myid'
[root@Mymaster ~]# ssh Myslave02 'echo 203 > /opt/zk/data/myid'
⑧启动各个节点的zk服务
[root@Mymaster data]# ssh Mymaster 'zkServer.sh start'
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@Mymaster data]# jps
22550 Jps
22461 QuorumPeerMain
[root@Mymaster data]# ssh Myslave01 'zkServer.sh start'
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@Mymaster data]# ssh Myslave01 'jps'
10244 Jps
10085 QuorumPeerMain
[root@Mymaster data]# ssh Myslave02 'zkServer.sh start'
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@Mymaster data]# ssh Myslave02 'jps'
10182 QuorumPeerMain
10506 Jps
[root@Mymaster data]#
⑨测试
一、查看各个节点的状态
[root@Mymaster data]# ssh Mymaster 'zkServer.sh status'
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zoo.cfg
Mode: follower
[root@Mymaster data]# ssh Myslave01 'zkServer.sh status'
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zoo.cfg
Mode: leader
[root@Mymaster data]# ssh Myslave02 'zkServer.sh status'
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zoo.cfg
Mode: follower
[root@Mymaster data]#
有且只有一个leader就说明ok的!!
二、验证zNode数据自动同步
在Mymaster节点上新增zNode→myZk
在Myslave01节点上验证是否同步
三、验证zkServer选举机制
描述:
①从zkServer中所有follower角色的进程中选举出一个zkServer作为leader。
②选举机制触发有两种情形:
情形1:zk分布式集群启动时,会触发一次选举
情形2:zk分布式集群已经正常启动,运行了一段时间,因为某种因素导致leader角色zkServer宕机了
我们这里验证情形2
查看状态
我的Myslave01是leader状态所以我将其手动停止来模拟其宕机
我们再查看一下其他节点的状态
可以看到我的Myslave02节点变成了leader状态
我们在启动Myslave01节点的zk服务
其状态变成了follower
总结:集群正常启动后只有leader状态的节点宕机才会重新进行选举
那么本次的复习到此就结束了!!!
编写于2020-1-23