ElasticSearch——详细看看ES集群的启动流程

本文详细介绍了ES集群在完全重启时的启动过程,包括主节点选举的Bully算法、数据恢复的阶段,以及如何从Red状态转变为Green状态。重点讨论了选举主节点的条件、集群元信息的选举、分片的分配与恢复策略,特别是主副分片的恢复过程,确保数据完整性和一致性。

参考:一起看看ES集群的启动流程

本文主要从流程上介绍整个集群是如何启动的,集群状态如何从Red变成Green,然后分析其他模块的流程。

这里的集群启动过程指集群完全重启时的启动过程,期间要经历选举主节点、主分片、数据恢复等重要阶段,理解其中原理和细节,对于解决或避免集群维护过程中可能遇到的脑裂、无主、恢复慢、丢数据等问题有重要作用。
集群启动的整体流程如下图所示:

选举主节点

假设有若干节点正在启动,集群启动的第一件事是从已知的活跃机器列表中选择一个作为主节点选主之后的流程由主节点触发

ES的选主算法是基于Bully算法的改进,主要思路是对节点ID排序,取ID值最大的节点作为Master,每个节点都运行这个流程
是不是非常简单?选主的目的是确定唯一的主节点,初学者可能认为选举出的主节点应该持有最新的元数据信息,实际上这个问题在实现上被分解为两步:

  • 先确定唯一的、大家公认的主节点
  • 再想办法把最新的机器元数据复制到选举出的主节点上

成为主节点的条件

基于节点ID排序的简单选举算法有三个附加约定条件:
一、参选人数需要过半,达到 quorum(多数)后就选出了临时的主
为什么是临时的?每个节点运行排序取最大值的算法,(因为网络分区或启动速度)结果不一定相同

举个例子,集群有5台主机,节点ID分别是1、2、3、4、5。当产生网络分区或节点启动速度差异较大时,节点1看到的节点列表是1、2、3、4,选出4;节点2看到的节点列表是2、3、4、5,选出5。结果就不一致了,由此产生下面的第二条限制。

二、得票数需过半。某节点被选为主节点,必须判断加入它的节点数过半,才确认Master身份,解决第一个问题。
三、当探测到节点离开事件时,必须判断当前节点数是否过半。如果达不到 quorum,则放弃Master身份,重新加入集群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值