群集挂在节点故障上

Max*_*ras 6 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"]
Run Code Online (Sandbox Code Playgroud)

Far*_*ahi 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
Run Code Online (Sandbox Code Playgroud)

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

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

其次,每个节点都会向 master 执行 ping 操作,以验证其是否仍然存在或是否需要启动选举过程。

通过上述配置:如果一个节点发生故障,Master 将重试 3 次,超时时间为 2 秒(总和 = 6 秒挂起),而不是 90 秒等待(挂起)。

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