从 Elasticsearch 集群中移除一个节点

作者:来自 Elastic Jessica Garson

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

更多阅读:

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

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


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

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

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

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

POST _flush/synced

2)获取节点名称

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

GET _cat/nodes?v

3)从集群中移除节点

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

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.exclude._name": "<node_name>"
  }
}

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

GET _cat/recovery?v&active_only=true

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

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

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

sudo systemctl stop elasticsearch

5)验证集群健康状态

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

GET _cluster/health

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

Elastic Cloud Serverless

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

总结

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值