群集挂在节点故障上

时间:2015-02-19 08:46:21

标签: elasticsearch

大家好,很高兴,

我们目前正在5个节点上运行一个小型的300 GB集群,其中包含大约30万个文档。除非节点真的出现故障(我的意思是网络或硬件故障),否则一切都能完美运行。

通常,当我们丢失节点时,群集会在几分钟内变得或多或少完全没有响应。关于索引和查询。这当然不太理想,因为我们有24/7的负载。

我非常感谢帮助您了解最佳实践设置以获得强大的群集。

我们的第一个目标是在节点崩溃时群集不会无响应。在阅读了我可以在网上找到的所有内容后,我无法真正理解ES是否设计为对ping_retries * ping_timeout秒无响应,或者即使在此期间群集将继续服务器查询请求。谁能帮我解释一下这个?

其次,如果群集进入红色状态会出现更糟糕的故障,是否可以允许群集仍然提供读取/查询请求?

对于愿意帮助我了解其工作原理或我们需要改变以使我们的ES安装更加强大的人,我将非常感激。

我在这里包含了我们的配置:

cluster.name: clustername
node.name: nodename
path.data: /data
node.master: true
node.data: true
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.multicast.ping.enabled: false
discovery.zen.ping.unicast.enabled: true
discovery.zen.ping.unicast.hosts: ["host1","host2","host3"]
bootstrap.mlockall: true
http.cors.enabled: true
index.number_of_shards: 10
action.disable_delete_all_indices: true
marvel.agent.exporter.es.hosts: ["marvel:9200"]

1 个答案:

答案 0 :(得分:1)

由于fault detection timeout值:

,群集因失败而挂起
discovery.zen.fd.ping_interval: 1s -> default 1s
discovery.zen.fd.ping_timeout: 2s -> default 30 secs
discovery.zen.fd.ping_retries: 3 -> default 3 secs

有两个故障检测过程正在运行。

第一个由主服务器执行,ping集群中的所有其他节点并验证它们是否处于活动状态。

第二,每个节点ping到master以验证它是否仍然存在或者需要启动选举过程。

通过以上配置: 如果节点出现故障,Master将重试3次,超时时间为2秒(sum = 6secs挂起)而不是90s wait(挂起)。

请注意我在本地网络上运行群集,并且连接速度<1ms和1Gbps,根据您的环境,您应该相应地进行调整。 我正在使用elasticsearch 5.1.1,您应该参考您的版本文档以获得准确的语法。