这篇文章讲的很好!
https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-name-node/index.html
几点summary:
- master和active backup之间采用共享内存的方式,可以是NAS之类传统的,也可以是QJM这种基于Quorum的。
- 基于Quorum的方式,master会采用Paxos协议来提交EDIT log给大多数节点。
- Backup会异步的从共享内存中间同步。平时也用,在master crash后的恢复也用一样的机制。
- 为预防split brain,需要对failed master进行fencing。有explicit的,比如去通知它进入standby mode,或者去SSH,杀进程。也有implicit的,利用EPOCH number来fence旧的EDIT LOG提交(每次切换,在PAXOS集群中会增加increment EPOCH,提交时带上,这样旧的master就无法继续提交了)