了解Elasticsearch的write_consistency和仲裁规则

根据elasticsearch文档,write_consistency级仲裁的规则是:

仲裁(> replicas / 2 + 1)

使用ES 0.19.10,在具有16个分片/ 3个副本的设置中,我们将获得16个主分片48个副本

运行2个节点,我们将有16个(主)+ 16个(副本)= 32个活动分片。

为了满足仲裁规则,仲裁> 48/2 + 1 = 25个活动分片。

现在,进行测试证明是相反的,直到我们有3个节点在运行,才达到write_consistency级别(写操作超时)。这种方式很有意义,因为在此设置中我们可以在每个2个节点的组之间获得一个裂脑,但是我不太了解该规则应该如何工作?我在这里使用错误的数字吗?

回答:

主分片计数实际上并不重要,因此我将用N代替它。

如果您的索引具有N个分片和2个副本,则复制组中将有3个分片。这意味着法定人数为两个:主要人数加上一个副本。您需要两个活动的分片(通常意味着两个活动的计算机)来满足写入一致性参数

具有N个分片和3个副本的索引在复制组中有四个分片(主+ 3个副本),因此法定人数为3。

具有N个分片和1个副本的索引是一种特殊情况,因为您不能真正拥有只有两个分片的仲裁。在只有一个副本的情况下,Elasticsearch只需要一个活动的碎片(例如主碎片),因此该quorum设置与one该特定安排的设置相同。

  • 0.19确实很老,您应该绝对,绝对地,积极地升级。自该版本发布以来,我什至无法计数已添加了多少错误修正和性能改进:)

  • 写一致性仅仅是网关检查。在执行索引请求之前,节点将进行一次稻草轮询以查看是否满足write_consistency。如果是,它将尝试执行索引并推送复制。这不能保证副本会成功…它们很容易失败,您会在响应中看到它。如果不满足一致性设置,它只是停止索引过程的一种机制。

  • 具有两个节点的“完全复制”设置是1个主分片+ 1个副本。每个节点都有完整的数据集。没有理由拥有更多副本,因为ES拒绝将相同数据的副本放在同一台计算机上(这没有意义,对HA毫无帮助)。无法索引只是写一致性的副作用,但它指出了设置中的一个更大问题:)

以上是 了解Elasticsearch的write_consistency和仲裁规则 的全部内容, 来源链接: utcz.com/qa/420168.html

回到顶部