根据elasticsearch文档,write_consistency级仲裁的规则是:
仲裁(> replicas / 2 + 1)
使用ES 0.19.10,在具有16个分片/ 3个副本的设置中,我们将获得
16个主要碎片
48个副本
运行2个节点,我们将有16个(主)+ 16个(副本)= 32个 Activity 分片。
为了满足仲裁规则,仲裁> 48/2 + 1 = 25个 Activity 分片。
现在,测试证明是相反的情况,直到我们有3个节点在运行,才达到write_consistency级别(写操作超时)。这种方式很有意义,因为在此设置中我们可以在每组2个节点之间获得一个裂脑,但是我不太了解该规则应该如何工作?我在这里使用错误的数字吗?
最佳答案
主分片计数实际上并不重要,因此我将用N代替它。
如果您的索引包含N个分片和2个副本,则复制组中将有3个分片。这意味着法定人数为两个:主副本加上一个副本。您需要两个 Activity 的分片(通常意味着两个 Activity 的机器)来满足写入一致性参数
具有N个分片和3个副本的索引在复制组中有四个分片(主+ 3个副本),因此仲裁数为3。
具有N个分片和1个副本的索引是一种特殊情况,因为您不能真正拥有只有两个分片的仲裁。在只有一个副本的情况下,Elasticsearch只需要一个 Activity 的碎片(例如主碎片),因此quorum
设置与该特定排列的one
设置相同。
一些注意事项: