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,重新选举
相关文章
|
7月前
|
SQL 分布式计算 DataWorks
dataworks常见问题之一直显示job RUNNING状态如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
115 4
|
5月前
|
SQL 数据采集 DataWorks
DataWorks产品使用合集之依赖脚本实际运行成功了,但其状态却显示为未运行,从而导致下游脚本没有运行,是什么原因
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
6月前
|
DataWorks API 调度
DataWorks产品使用合集之在调度配置配置了节点的上游节点输出,没办法自动生成这个flow的依赖,该怎么操作
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
7月前
|
Ruby Perl
工程支持xcframework,检查pod版本及更新pod
工程支持xcframework,检查pod版本及更新pod
70 0
|
Kubernetes 网络协议 容器
k8s搭建集群报错汇总—202302【更新】
k8s搭建集群报错汇总—202302【更新】
142 0
|
7月前
|
JSON 分布式计算 DataWorks
DataWorks常见问题之依赖的自动节点修改为统一调度节点失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
7月前
|
Kubernetes Cloud Native 网络协议
云原生|kubernetes部署和运行维护中的错误汇总(不定时更新)
云原生|kubernetes部署和运行维护中的错误汇总(不定时更新)
2077 0
|
Kubernetes 调度 容器
二进制 k8s 集群下线 worker 组件流程分析和实践
二进制 k8s 集群下线 worker 组件流程分析和实践
108 0
|
JSON Kubernetes 应用服务中间件
二进制 k8s 集群下线 master 组件流程分析和实践
二进制 k8s 集群下线 master 组件流程分析和实践
130 0