【整体设计】
NN(Namenode)的HA机制主要依靠zkfc完成,zkfc在NN所在节点以独立进程的方式运行。其内部主要由主控模块(ZKFailoverController)、健康检测模块(HealthMonitor)、主从选举模块(ActiveStandbyElector)三个模块协同实现。
zkfc进程启动时,首先会创建ZKFailoverController,负责其余两个模块回调事件的处理。
健康检测模块通过定时向NN发送rpc请求进行健康状态的监测。
主从选举模块封装了对zookeeper的处理逻辑,包括tcp连接的建立、创建节点、watch节点的变化等。
当NN的健康状态发生变化时,健康检测模块会回调通知主控模块,进而触发选举模块进行选举或者退出选举。
同样,当选举模块检测到zookeeper上节点的状态变化时,会自主触发进行选举,然后回调通知主控模块,最后通过rpc通知NN成为active或standby。
zkfc的启动选举流程如下图所示:

zkfc启动后,首先构造选举模块,并向zookeeper建立连接
然后启动对NN的健康检测,向NN发送rpc请求,获取NN的状态和健康情况
假如NN是健康的,触发进行选举,即在zookeeper上创建临时的锁节点
zk本身的机制保证只有一个zkfc能成功创建节点。
对于成功创建节点的zkfc,会向其他的NN发送rpc请求进行fencing(本质上是告知对端成为standby),然后在zookeeper上创建持久的记录NN主从相

最低0.47元/天 解锁文章
3235

被折叠的 条评论
为什么被折叠?



