从 Elasticsearch 集群中移除一个节点

12 阅读4分钟

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

作者:来自 Elastic Jessica Garson

解释如何从 Elasticsearch 集群中移除一个节点。

更多阅读:

想获得 Elastic 认证?了解下一次 Elasticsearch Engineer 培训的时间吧!

Elasticsearch 拥有丰富的新功能,帮助你为你的使用场景构建最佳搜索解决方案。浏览我们的示例 notebooks 了解更多内容,开始免费 cloud 试用,或者现在就尝试在本地机器运行 Elastic。


在管理 Elasticsearch 集群时,有时需要从集群中移除一个节点。这可能是由于硬件故障、维护,或者缩减集群规模所致。本文将讨论在不造成任何数据丢失或影响集群性能的情况下,安全地从 Elasticsearch 集群中移除节点的步骤。如果你想了解 Elasticsearch 节点的概念和角色类型,请查看这篇指南

从 Elasticsearch 集群中安全移除节点的步骤

1)停止写入并执行同步刷新(可选)

首先,如果你可以在短时间内停止写入操作,建议执行一次同步刷新。这个操作有助于在移除节点后集群重启时加快恢复过程。要执行同步刷新,请运行以下命令:

`POST _flush/synced`AI写代码

2)获取节点名称

在执行同步刷新后,你需要知道要移除的节点名称,以便将其从集群中移除。你可以通过执行以下命令来获取节点名称:

`GET _cat/nodes?v`AI写代码

3)从集群中移除节点

确定节点名称后,你可以将该节点从集群中移除。要移除该节点,需要更新集群设置,使用节点名称将其排除。执行以下命令,并将 <node_name> 替换为你在上一步中获取的节点名称:

`

1.  PUT _cluster/settings
2.  {
3.    "persistent": {
4.      "cluster.routing.allocation.exclude._name": "<node_name>"
5.    }
6.  }

`AI写代码

这个命令会指示 Elasticsearch 将指定节点上的所有分片迁移到集群中的其他节点。你可以通过执行以下命令来监控分片迁移的进度:

`GET _cat/recovery?v&active_only=true`AI写代码

在继续下一步之前,请等待分片迁移过程完成。

4)停止该节点上的 Elasticsearch 进程

当所有分片都已迁移到其他节点后,你就可以安全地停止要移除节点上的 Elasticsearch 进程。根据你的安装方式和操作系统,停止 Elasticsearch 的命令可能有所不同。例如,如果你在 Linux 系统上使用 systemd,可以执行以下命令:

`sudo systemctl stop elasticsearch`AI写代码

5)验证集群健康状态

最后,通过执行以下命令来验证集群的健康状态:

`GET _cluster/health`AI写代码

确保集群状态为 “green”(表示所有分片都已正确分配),且集群中的节点数量减少了一个。

Elastic Cloud Serverless

另一种避免担心节点管理的方法是使用 Elastic Cloud Serverless。在这个全托管的解决方案中,Elastic 会负责集群的底层架构,意味着你不需要担心节点、分片或扩展,所有操作都会自动完成。

总结

总之,从 Elasticsearch 集群中移除节点的步骤包括禁用该节点的分片分配、可选地执行同步刷新、将节点排除出集群,以及停止该节点上的 Elasticsearch 进程。通过遵循这些步骤,你可以安全地移除节点,不会影响集群性能或导致数据丢失。如果你想要托管解决方案,可以考虑使用 Elastic Cloud Serverless。

原文:Removing a node from an Elasticsearch cluster - Elasticsearch Labs