expected_nodes和recover_after_nodes参数之间的差异

时间:2014-08-26 20:33:32

标签: elasticsearch

我无法看到网关模块恢复阶段的两个参数之间的区别。

documentation

  • gateway.recover_after_nodes设置(接受一个数字)控制后,有多少(...)符合条件的节点(...)恢复开始

  • gateway.expected_nodes允许设置预计在群集中有多少(...)符合条件的节点,并且一旦满足,(... )恢复开始

根据我的理解,一旦节点数等于设定值,这两个设置就会触发恢复阶段。

为什么使用一个而不是另一个?

使用它们有什么意义?

例如:

gateway:
    recover_after_nodes: 3
    expected_nodes: 5

在这种情况下,expected_nodes的目的是什么?一旦有3个节点,将立即触发恢复。必须有另一个理由来使用它。

我希望我的问题很清楚。

提前致谢!

2 个答案:

答案 0 :(得分:12)

使用recovery_after_nodes,recover_after_data_nodes或recovery_after_master_nodes时,一旦满足所有设置条件,群集将在开始恢复之前开始等待recover_after_time:

  

gateway.recover_after_time设置(接受时间值)   设置等待恢复一旦发生的时间   gateway.recover_after ...满足节点条件。

使用expected_nodes,expected_data_nodes或expected_master节点时,一旦满足所有条件,恢复将开始 - 群集将不会等待。此外,它还会将recovery_after_time默认为5分钟。

在您的测试用例中:

gateway:
    recover_after_nodes: 3
    expected_nodes: 5

一旦你点击3个节点,倒计时时钟开始,然后集群将在5分钟内恢复(默认值)或者如果你点击5个节点。基本上它允许您设置最小阈值(recovery_after_nodes),并使用超时(recovery_after_time)等待所需的状态(expected_nodes)。您将在recovery_after_nodes被命中之后恢复recovery_after_time,或者当hit_nodes被命中时(无需额外等待) - 以先到者为准。

答案 1 :(得分:0)

从公开文件中可以看出,这个问题存在误解。

http://www.elastic.co/guide/en/elasticsearch/reference/1.x/modules-gateway.html

gateway:
recover_after_time: 5m
expected_nodes: 2
  

在预期的2个节点中,群集将导致恢复开始5分钟   在第一个节点启动后,但一旦集群中有2个节点,   恢复将立即开始(无需等待)。

因此,recover_after_time定义的计时器将在第一个节点启动后启动。找到recover_after_nodes中定义的节点后无法启动