Elasticsearch如何从不一致的法定人数中恢复

时间:2018-02-16 14:25:39

标签: elasticsearch replication recovery fault-tolerance

使用具有仲裁的复制时,Elasticsearch允许某些(少量)副本分片的写入失败。写入副本可能会失败,因为它暂时不可用(例如,由于临时网络分区)。当该分片再次可用时(例如,网络是固定的),会发生什么?

Elasticsearch是否会自动检测到该分片已过期(陈旧,与主分片不一致)并在后台更新它?或者你必须进行手动操作吗?当碎片从不可用返回但是已过期时,Elasticsearch是否会自动避免查询该碎片(并检索陈旧数据),直到它被更新为止?或者您必须提供特殊的查询参数,以确保不使用过时的分片吗?

2 个答案:

答案 0 :(得分:1)

Elasticsearch自动管理过期的副本。无需手动操作或特殊查询。

如果节点/网络出现故障,您必须确保群集的法定数量保持联机状态,否则您将遇到split brain问题,在该问题中您无法知道哪个副本在线并且哪个副本在线约会。

答案 1 :(得分:1)

注意:仲裁通常与从所有符合条件的主节点中选择一个主节点相关联。该主服务器维护集群状态,该状态跟踪一个主分片(加上0或更多副本分片) - 没有涉及仲裁。

复制协议在6.0中已经有很多改进,包括序列号和主要术语。 blog post about it是一个很好的概述。基本上所有操作都被编号(每个分片),因此可以检测和重放丢失的操作;请参阅博客文章中的恢复部分。

对于失败的主分片,它可以变得更有趣;有关更多详细信息的精彩文章可在Elastic's discuss上找到。