【问题标题】:How does elasticsearch prevent cascading failure after node outage due to disk pressure?elasticsearch如何防止因磁盘压力导致节点中断后的级联故障?
【发布时间】:2021-09-11 10:43:55
【问题描述】:

我们运行一个弹性搜索堆栈,它使用 3 个节点来存储日志数据。我们当前的配置是拥有 3 个主索引和 1 个副本的索引。 (我们刚刚观察了这个配置并对性能感到满意,所以我们决定(还)不花时间进行优化)

在节点中断(假设磁盘已满)后,我观察到 elasticsearch 会自动将其分片重新分配到其余实例 - 正如所宣传的那样。

但是,这会增加其余两个实例的磁盘使用率,使其成为级联故障的候选对象。

日志数据的持久性并不是最重要的。因此,我正在考虑重新配置 elasticsearch 以在节点中断后不创建新副本。相反,它只能在初选上运行。这意味着在单个节点中断后,我们将在没有冗余的情况下运行。但这似乎比级联失败要好。 (这是一次性费用)

另一种方法是增加磁盘大小。 (这是一项持续的成本)

我的问题

(如何)在第一个节点发生故障后,我可以将 elasticsearch 配置为不创建新副本吗?或者这被认为是一个坏主意,而规范的方法就是增加磁盘容量?

【问题讨论】:

    标签: elasticsearch lucene replication diskspace redundancy


    【解决方案1】:

    再平衡代价高昂

    当一个节点离开集群时,会在剩余的节点上产生一些额外的负载:

    • 将副本分片提升为主分片以替换节点上的任何主分片。
    • 分配副本分片以替换丢失的副本(假设有足够的节点)。
    • 在剩余节点上均匀地重新平衡分片。

    这会导致相当多的数据被移动。

    有时,一个节点仅在短时间内丢失。在这种情况下,完全重新平衡是不合理的。考虑到这一点,当一个节点出现故障时,elasticsearch 会立即为丢失节点上的每个主节点提升一个副本分片到主节点,然后它会等待一分钟,然后再创建新的副本避免不必要的复制。

    仅在需要时重新平衡

    此延迟的持续时间是一种权衡,因此可以配置。等待时间越长意味着无用复制的可能性越小,但由于冗余减少,停机时间也越多。

    将延迟增加到几个小时会导致我正在寻找的结果。它让我们的工程师有一些时间做出反应,以免额外的重新平衡负载造成级联故障。

    我是从官方elasticsearch documentation那里得知的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 2014-07-22
      • 2011-09-29
      • 2021-02-13
      • 2021-10-20
      相关资源
      最近更新 更多