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,重新选举
相关文章
|
JSON 数据格式 索引
记一次ES节点扩容、数据迁移实践
ElasticSearch、ES数据迁移、ES扩容
14099 1
|
Unix Linux iOS开发
Elasticsearch如何配置日志
Elasticsearch如何配置日志
|
10月前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
537 4
|
存储 Prometheus 监控
Prometheus 的报警机制:Alertmanager 的配置与使用
【8月更文第29天】Prometheus 是一个非常强大的监控系统,它不仅能够收集和存储时间序列数据,还能通过 Alertmanager 提供灵活的报警机制。Alertmanager 负责接收 Prometheus 发送的警报,并根据配置的规则执行相应的通知动作。本文将详细介绍如何配置 Alertmanager 以及如何使用它来实现基于 Prometheus 指标的报警通知。
3468 1
|
存储 Go 开发者
深入理解Go语言中的`src`目录结构
【8月更文挑战第31天】
365 0
|
存储 SQL 分布式计算
MaxCompute的优势
【7月更文挑战第1天】MaxCompute的优势
227 0
|
存储 监控 测试技术
Kibana 的 Alert—Elastic Stack 实战手册
Kibana 的 Alert 模块主要用于 Elastic Stack 的监控告警。以一种相对较低的使用成本,将复杂的查询条件,编辑完成后监控不同的 Elastic Stack 的技术产品中产生的数据,最终把符合条件的告警信息以需要的方式反馈给用户。
5058 0
Kibana 的 Alert—Elastic Stack 实战手册
|
数据安全/隐私保护 索引
Kibana安装部署
Kibana安装部署
|
NoSQL Redis
Redis Cluster集群主从切换踩坑记
Redis Cluster经过运行一段时间后,会经常发生主从关系的自动切换,应该是redis.conf里的集群节点的超时时限参数cluster-node-timeout有关。
13278 0
|
存储 缓存 自然语言处理
ES 性能调优,这可能是全网最详细的 Elasticsearch 性能调优指南
ES 性能调优,这可能是全网最详细的 Elasticsearch 性能调优指南
ES 性能调优,这可能是全网最详细的 Elasticsearch 性能调优指南