es 的集群启动过程要经历选举主节点、主分片、数据恢复等重要阶段,理解其中原理和细节,对于解决或避免集群维护过程中可能遇到的脑裂,无主,恢复慢,丢数据等问题有重要作用。本文基于es 5.5.3版本,以通俗的语言描述流程中的原理和机制。
基于版本:5.5.3
相对于节点启动流程,我们通常更关注集群启动流程,这次不研究细节,说说原理和机制。
集群启动整体流程:
选举主节点
选主是对Bully算法的改进,主要思路是对节点 ID 排序,取最大值做 master,每个节点都运行这个流程。由此产生三个制约条件:
参选人数需要过半,达到quorum后就选出了临时的主。为什么是临时的?每个节点运行排序取最大值的算法,结果不一定相同。举个栗子,集群有5台主机,节点 ID 分别是:1,2,3,4,5.当产生网络分区或者节点启动速度差异较大,节点1 看到的节点列表是:1,2,3,4,选出4;节点2看到的节点列表:2,3,4,5,选出5。结果就不一致了由此产生第二条限制。
得票数须过半。某节点被选为主,须判断加入他的节点数过半,才确认 master 身份。解决第一个问题。
master 节点,当探测到节点离开事件,须判断当前节点数是否过半。如果不到quorum,则放弃 master 身份,重新加入集

本文深入解析 Elasticsearch (ES) 集群启动过程,涉及选举主节点、集群元信息选举、分配和恢复分片等关键步骤。主节点选举采用改进的 Bully 算法,确保集群一致性。选举完成后,主节点负责分配主分片,再选举副分片,最后进行分片恢复以保证数据一致性。整个过程涉及集群状态变化,从红色到黄色,再到绿色,标志着集群完全启动。
最低0.47元/天 解锁文章
1034

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



