Elasearch选主流程过程分析总结
作者:互联网
1.ES选主流程分析
概要: 我们知道es本身就是具有分布式特性的框架,并且采用的主从的架构,有主有从,那么当出现网络故障或主节点挂了,ES如果维持集群的状态,重新选举出一个master结点呢?
1.1 采用的选举算法
es采用的选择算法是Bully算法,他假定集群中所以结点都有一个唯一的ID,使用该ID对结点进行排序。任何时候的当前Leader都是参与集群的最高ID结点.相关概念可参考:https://zhuanlan.zhihu.com/p/237710254?utm_source=ZHShareTargetIDMore
1.2 相关的配置
1.2.1: es与选举过程相关的一部分重要配置如下:
discovery.zen.miniumum_master_nodes:最小主节点数量,这个是用来防止脑裂的、防止数据丢失重要参数。除了在选主过程中时用于多数决定派,还用于多处重要判断:
-
触发选举: 进入选举流程必须达到法定人数
-
决定master: 在选举中临时master后,该master节点需要判断自己获得的投票要达到法定人数
-
gateway选举原信息: 向有资格成为master的节点发送请求,获取元数据,获取的响应数必须达到法定人数
-
master发布集群状态: 发布成功的数量为多数,也就是多数人都获取到master的信息
discovery.zen.ping.unicast.hosts: 单播: 集群的种子节点列表,构建集群时本节点会尝试连接这个节点列表,那么列表中的主机会看到整个集群都有哪些主机。可以配置为部分或全部集群节点
discover.zen.join_timeout: 节点加入现有集群时的超时时间,默认为ping_timeout的20倍
1.3 ES详细选举流程
1.4 节点失效探测
到上面位置选主流程已经完毕,Master的身份已经确定,非master节点已加入集群。节点失效检测会定期监控节点是否离线,然后处理其中的异常,节点失效探测十分重要。没有这个会出现双主或多主情况。使集群混乱。定期默认是1秒发送ping命令
在master节点:会定期启动NodesFD 定期探测加入集群的节点是否活跃
在非master节点:会定期启动master节点探测。检测MasterFd.定期探测master节点是否活跃
标签:总结,结点,选举,master,Elasearch,主流程,集群,节点 来源: https://blog.csdn.net/shengdehaizi/article/details/113445800