首页 > 解决方案 > Elasticsearch - 节点如何检测分片故障

问题描述

我对弹性搜索有基本的了解。我遇到了以下短语。来自https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-replication.html

在主节点本身发生故障的情况下,托管主节点的节点将向主节点发送有关它的消息。索引操作将等待(最多 1 分钟,默认情况下)让主节点将其中一个副本提升为新的主节点。

问题是,托管分片的节点如何知道分片的故障?据我了解,shard 是在数据节点上运行的 lucene 实例。

标签: elasticsearch

解决方案


我想,你对这个陈述感到困惑

托管分片的节点如何知道分片的故障?据我了解,shard 是在数据节点上运行的 lucene 实例。

虽然确实每个分片都是一个 Lucene 实例(索引),但它不是 1:1 映射,并且 elasticsearch 的 1 个数据节点可以托管多个分片,而不仅仅是 1 个分片,Lucene 分片的故障并不总是意味着数据节点的故障.

持有主分片的节点知道它是否连接到网络,是否能够索引数据或分片是否已损坏,如@julian 所述,然后它可以将该信息发送到主节点,然后将其他副本提升为主节点它包含在所有节点都持有的集群状态中。

在网络故障情况下,节点上托管的所有主分片都将被其他分片替换,并且很容易检测到主分片不会从该数据节点发出心跳。

希望我的答案的大胆部分是您正在寻找的,否则请随时发表评论并尝试进一步解释。


推荐阅读