ES集群状态发布流程

简介: 简述ES集群状态发布的过程,以及对超时的处理。

publishing the cluster state

master节点负责变更集群状态信息,一次变更多个操作(batch),发布到所有节点。

发布过程

  1. master 发布新的集群状态信息到所有节点。
  2. 所有节点回复 acknowledgement ,但不应用。
  3. master 收到大多数 master-eligible 的 acknowledgement后,意味着集群状态信息提交成功(committed)。
  4. master发布 应用集群信息 的消息。
  5. 所有节点 应用 集群信息,并再次回复 acknowledgement。

上述过程,从第一步开始,到第五步,必须在 30s 内完成。这由参数 cluster.publish.timeout 控制,默认30s 。


如果30s后,集群状态还未完成committed(第三步),则集群状态信息会被拒绝,master节点认为自己失败(failed),让出master角色,开始选举新master。


如果30s内,集群状态完成committed,master节点认为变更成功。master会发布"应用"消息,继续等待所有节点的再次 acknowledgement 或 timeout(30s)。


如果有节点 timeout,它会被master认为是 lagging(滞后)的。master 继续等待 lagging 节点的第二个acknowledgement,等待时间由参数 cluster.follower_lag.timeout 控制,默认90s 。如果90s还没收到,lagging 节点会被认为 failed,被master移除集群。


集群状态一般都基于previous集群状态信息进行增量更新,如果有节点没有previous集群状态信息,master会给它推送全量的集群状态信息。

cluster fault detection

  • follower checks:master 定期检查其他节点,确定他们都是连接的,健康的。
  • leader checks:其他节点 定期检查 master,确定它是健康的。

上述checks,可偶尔失败、timeout。如果连续失败,则节点会被认为 faulty 。非master节点faulty,master将其remove出集群。master节点faulty,执行检测的节点启动discovery流程,寻找或选举新master。连续次数,通过参数

  • cluster.fault_detection.leader_check.retry_count: 3
  • cluster.fault_detection.follower_check.retry_count: 3

如果master检测到节点断开连接,该情况被认为 immediate failure,忽略timeout、retry设置,直接remove该节点。

如果节点检测到master断开连接,该情况被认为 immediate failure,忽略timeout、retry设置,直接启动discovery流程,寻找或选举新master。

discovery and cluster formation settings

expert settings

cluster.election.duration

每次选举的时间,超过该时间后,认为选举失败,重新选举。默认500ms。

cluster.follower_lag.timeout

master等待lagging节点第二次acknowledgement的时间,默认90s

cluster.join.timeout

节点发送 join cluster请求后,等待的时间,超过后它认为请求失败,重发。默认60s

cluster.publish.timeout

master节点等待其他节点应用集群信息,并返回第二次acknowledgement的时间,默认30s

总结

  • 网络连接检查、健康检查:持续30s 失败,faulty。
  • 断开连接:立马 faulty。
  • 非master节点应用集群状态信息:30s timeout 后变 lagging,120s(30+90) 后被 remove 出集群
  • master发布集群状态:30s 未 committed,自动放弃master,重新选举
相关文章
|
存储 算法 数据管理
分布式存储的多副本纠删码简介
分布式存储的多副本纠删码简介
|
机器学习/深度学习 人工智能 Android开发
安卓智能手机操作系统演化史
【2月更文挑战第5天】 本文通过对安卓智能手机操作系统的演化历程进行探讨,分析了安卓系统从诞生至今的发展脉络和关键技术革新,从最初的版本到如今的最新版本,探讨了其在移动互联网时代的重要作用,以及未来可能的发展方向。
|
Java Shell Linux
Android——编译(一):编译make的基础知识
Android——编译(一):编译make的基础知识
498 0
|
API 索引
es实战-分片分配失败解决方案
分片无法分配情况的一些解决办法
3007 0
|
1月前
|
SQL 关系型数据库 MySQL
利用MySQL的SHOW CREATE TABLE命令查看表的创建细节
总结来说,SHOW CREATE TABLE命令是MySQL中一个重要的工具,对于包括数据库架构拷贝、审核和备份等多种方面都非常有帮助。它提供了一种直接的方式来获得表的结构定义,从而可以非常方便的进行数据库管理和维护任务。
251 4
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
729 4
CentOS7.0通过VMWareEsxi镜像重装系统
第一步、首先我们先选择对应的镜像文件
549 0
|
SQL 资源调度 监控
实时计算 Flink版产品使用合集之Flink on YARN 下,任务代码中通过 JobListener 监听任务状态,onJobSubmitted 和 onJobExecuted 同时触发如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
410 3
|
存储 SQL 分布式计算
MaxCompute的优势
【7月更文挑战第1天】MaxCompute的优势
262 0
|
Kubernetes Java 索引
Elasticsearch 源码探究 001——故障探测和恢复机制
Elasticsearch 源码探究 001——故障探测和恢复机制