2013-06-20 25 views
8

的仲裁规则按照elasticsearch文档中,write_consistency级仲裁规则是:Undestanding的write_consistency和Elasticsearch

仲裁(>副本/ 2 + 1)

使用ES 0.19.10,在一个设置16个碎片/ 3个副本我们将获得 16个主要碎片 48个副本

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

为达到法定规则,法定人数> 48/2 + 1 = 25个活动分片。

现在,测试此证明,否则write_consistency级别不符合(写操作超时),直到我们有3个节点运行。这种有道理的,因为我们可以得到每2个节点组之间的裂脑在此设置,但我不很明白这个规则应该是怎样工作的?我在这里使用了错误的号码吗?

+0

这感觉就像你写一致性设置为所有一个更大的问题。请检查您的写有“一致性”:所有 – chaos

+0

^我的意思是每个单独的指标要求。 – chaos

回答

5

主碎片数量实际上并不重要,所以我打算用N.

来取代它。如果你有N碎片和2个副本的索引,有三个碎片复制小组。这意味着法定人数是两个:主要加副本之一。您需要两个活动碎片(通常表示两个活动机器)满足写入一致性参数

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

具有N个碎片和1个副本的索引是一种特殊情况,因为只有两个碎片您无法真正拥有仲裁。只有一个副本,Elasticsearch只需要一个单一的活性碎片(例如主),所以quorum设置是相同的one设置此特定布置。

的几个注意事项:

  • 0.19是真的老了,你绝对应该,绝对,肯定升级。我甚至无法计算自该版本以来已添加多少bug修复和性能改进:)

  • 写入一致性仅仅是网关检查。执行索引请求之前,节点会做秸秆调查,看是否write_consistency得到满足。如果是,它会尝试执行索引并推送复制。这并不能保证副本会成功......他们可以很容易失败,你会看到它的响应。如果不满足一致性设置,它只是一种停止索引进程的机制。

  • 具有两个节点的“完全复制”设置是1个主分片+ 1个副本。每个节点都有一组完整的数据。没有任何理由能有更多的副本,因为ES拒绝把同一数据的拷贝在同一台机器上(没有意义,不利于HA)。由于无法指数只是写一致性的副作用,但它指出了您的设置:)