首页 > 解决方案 > 滚动重启时集群会拒绝查询吗?

问题描述

这是滚动重启的帖子:

https://www.elastic.co/guide/en/elasticsearch/guide/master/_rolling_restarts.html

它会影响在此过程中运行的任何查询吗?该过程不会明确让集群知道节点将被杀死,而只会停止同步和重新平衡。现有查询是否被拒绝或重试?

还有另一个选项 "transient": { "cluster.routing.allocation.exclude._ip": } 可以“禁用”节点重新启动和重新平衡数据。这比链接所说的方法更好吗?

标签: elasticsearch

解决方案


这取决于您的集群配置。你可以避免它。

如果您有副本并且不直接查询重新启动的节点,您应该没问题。

首先看一下协调节点注意事项

搜索请求或批量索引请求等请求可能涉及保存在不同数据节点上的数据。例如,搜索请求分两个阶段执行,这些阶段由接收客户端请求的节点(协调节点)协调。

在分散阶段,协调节点将请求转发给持有数据的数据节点。每个数据节点在本地执行请求并将其结果返回给协调节点。在收集阶段,协调节点将每个数据节点的结果减少为单个全局结果集。

每个节点都隐含地是一个协调节点。这意味着将 node.master、node.data 和 node.ingest 三个都设置为 false 的节点将仅充当协调节点,无法禁用。因此,这样的节点需要有足够的内存和 CPU 才能处理收集阶段。

可能有不同的边缘情况:

  1. 集群中只有一个节点:请求将失败——添加更多节点
  2. 您在集群中有多个节点,分片有 0 个副本:如果您需要在查询中重新启动节点的数据,请求将部分失败——有副本
  3. 您有多个具有副本的节点,并且您直接查询重新启动节点:请求将失败 - 从您的应用程序中排除重新启动节点或始终查询专用协调节点,它将处理离开集群的节点。

推荐阅读