Zookeeper构成选举机制ZKFailoverController主要职责
Zookeeper构成zookeeper组件,作用是提供分布式协调服务
Zookeeper是一种没有主从模式的概念,Zookeeper引用了概念Leader,Flower,Observer三个角色
,Zookeeper最常用是Leader和Flower
ZKFailoverController主要职责半数机制,因为Zookeeper没有主从模式在,所以每一个节点都认为自己是Leader,所以我们在部署
Zookeeper的时候回给每台Zookeeper节点一个ID码,ID码在投票中使用,在zookeeper的选举过程中,为了保证选举过程最后能选出leader,就一定不能出现两台机器得票相同的僵局,所以一般的,要求zk集群的server数量一定要是奇数,也就是2n+1台
1、健康监测:周期性的向它监控的NN发送健康探测命令,从而来确定某个NameNode是否处于健康 状态,如果机器宕机,心跳失败,那么zkfc就会标记它处于一个不健康的状态。
2、会话管理:如果NN是健康的,zkfc就会在zookeeper中保持一个打开的会话,如果NameNode同时还是Active状态的,那么zkfc还会在Zookeeper中占有一个类型为短暂类型的znode,当这个NN挂掉时,这个znode将会被删除,然后备用的NN,将会得到这把锁,升级为主NN,同时标记状态为Active。节点/服务器
3、NN启动注册:当宕机的NN新启动时,它会再次注册zookeper,发现已经有znode锁了,便会自动变为Standby状态,如此往复循环,保证高可靠,需要注意,目前仅仅支持最多配置2个NN
4、master选举:如上所述,通过在zookeeper中维持一个短暂类型的znode,来实现抢占式的锁机制,从而判断那个NameNode为Active状态。



