es大集群切有副本的情况下如何重启es集群

当您需要执行群集的滚动重新启动时,将使群集保持联机和运行状态,但一次使一个节点脱机。

常见原因是Elasticsearch版本升级或服务器本身的某种维护(例如OS更新或硬件)。无论如何,都有一种特殊的方法来执行滚动重启。

从本质上讲,Elasticsearch希望您的数据能够完全复制并均衡。如果关闭单个节点进行维护,群集将立即识别丢失节点并开始重新平衡。如果您知道节点维护是短期的,这可能会令人恼火,因为非常大的分片的重新平衡可能需要一些时间。

我们想要做的是告诉Elasticsearch推迟重新平衡,因为我们对外部因素导致的集群状态有了更多的了解。程序如下:

  1. 如果可能,请停止索引新数据并执行同步刷新。这并非总是可行,但有助于加快恢复时间。同步刷新请求是“尽力而为”操作。如果有任何挂起的索引操作,它将失败,但如果需要,可以安全地多次重新发出请求。

    POST / _flush / 同步
  2. 禁用分片分配。这可以防止Elasticsearch重新平衡丢失的分片,除非您另有说明。如果您知道维护窗口很短,这是一个好主意。您可以按如下方式禁用分配:

    curl xput  -d'{"transient":{"cluster.routing.allocation.enable":"none"}}'
  3. 停止需要重启的节点:curl xput http://ip:port/_cluster/node/_local/_shutdown

  4. 重新启动节点,并确认它加入群集。

  5. 对其余节点重复步骤3、4。

  6. 重新启用分片分配如下:

    curl xput http://ip:9092/_cluster/shard/setting -d'{"transient":{"cluster.routing.allocation.enable":"all"}}'

    碎片重新平衡可能需要一些时间。等到群集恢复到状态green后再继续。

  7. 此时,您可以安全地恢复索引(如果您之前已停止过),但在恢复索引之前等待群集完全平衡将有助于加快进程。


猜你喜欢

转载自blog.51cto.com/12182612/2438728