Elasticsearch平滑下线节点

本文详细介绍了如何在Elasticsearch集群中平滑地对data-node、client-node和master-node节点进行下线操作,确保数据完整性和集群稳定性。步骤包括节点排除、分片迁移、节点下线及禁用策略解除等,旨在避免分片丢失和异常,保障集群健康运行。

作者:SUNNY
时间:2018-06-04


背景:

对于某些节点要进行下线处理

节点的数据盘功能正常

集群的分片分配策略不会限制分片的迁移

操作步骤:

data-node节点
什么情况下可以平滑下线?

下线操作不会造成分片丢失,不会造成分片异常,不会丢失数据

操作步骤:

#start
#步骤1:将节点从集群路由策略中排除
curl -XPUT http://0.0.0.0:9200/_cluster/settings?pretty -d '{"transient":{"cluster.routing.allocation.exclude._ip":"10.10.10.11"}}'
#步骤2:等待节点上分片全部被迁移
##检查集群状态,若出现pening_tasks,当pending_tasks的等级>=HIGH时,存在集群无法新建索引的风险
curl http://0.0.0.0:9200/_cluster/health?pretty
curl http://0.0.0.0:9200/_cluster/pending_tasks?pretty
##若集群中出现UNASSIGNED shards,检查原因,查看是否是分配策略导致无法迁移分片
curl http://0.0.0.0:9200/_cluster/allocation/explain?pretty
#步骤3:下线节点
#步骤4:取消节点禁用策略
curl -XPUT http://0.0.0.0:9200/_cluster/settings?pretty -d '{"transient":{"cluster.routing.allocation.exclude._ip": null}}'
#end

#其他操作
##两个节点禁用策略
curl -XPUT http://0.0.0.0:9200/_cluster/settings?pretty -d '{"transient":{"cluster.routing.allocation.exclude._ip":"10.10.10.11,10.10.10.12"}}'

client-node节点

#未验证
#start
##步骤1:LB中删除指定IP
##步骤2: 停止IP指定的ES实例
#end

master-node节点

#下线非master节点
#start
#步骤1:停止IP指定的ES实例
##注意:由于ES集群配置文件中指定了ES集群必须有2台master eligible节点才能进行选举选出master节点,所以mater-node组的节点数应保持至少3台
#end
#下线master节点
#start
#步骤1:停止IP指定的ES实例
##注意:master节点进行选举的时间默认是3s,配置文件中可能设置的为30s。在master选举期间集群功能不可用(索引、查找、各类API功能)
#end
Elasticsearch 8 中,安全下线或移除节点需要确保集群能够正确处理数据再平衡和分片迁移,以避免数据丢失或集群状态异常。以下是推荐的操作流程: ### 3.1 使用 Cluster Reroute API 手动迁移分片 如果计划从集群中移除某个节点,首先应确保该节点上的主分片和副本分片都被迁移到其他可用节点上。可以通过以下步骤手动触发分片迁移: 1. 获取当前集群的节点信息: ```bash GET /_cat/nodes?v ``` 2. 获取未分配的分片信息(可选): ```bash GET /_cat/shards | grep UNASSIGNED ``` 3. 使用 `cluster reroute` API 进行分片迁移: ```json POST /_cluster/reroute { "commands": [ { "move": { "index": "your_index_name", "shard": 0, "from_node": "node_to_remove", "to_node": "target_node" } } ] } ``` 在此操作中,需将 `your_index_name`、`node_to_remove` 和 `target_node` 替换为实际值。 4. 重复执行上述命令,直到所有分片都成功迁移到其他节点[^4]。 ### 3.2 设置 Cluster Settings 排除节点 Elasticsearch 提供了动态设置功能,允许通过更新集群设置来排除特定节点。这一步可以确保新索引不会被分配到即将下线节点上,并开始将现有分片迁移到其他节点: ```json PUT /_cluster/settings { "persistent": { "cluster.routing.allocation.exclude._ip": "IP_ADDRESS_OF_NODE_TO_REMOVE" } } ``` 替换 `IP_ADDRESS_OF_NODE_TO_REMOVE` 为要移除节点的实际 IP 地址。一旦该设置生效,Elasticsearch 将自动开始将分片从目标节点迁移到其他节点。等待所有分片迁移完成后,即可安全地关闭该节点。 ### 3.3 关闭节点进程 当确认该节点上的所有分片都已成功迁移到其他节点后,可以通过以下命令查找并终止 Elasticsearch 进程: ```bash ps aux | grep elasticsearch ps -ef | grep elasticsearch kill -9 <pid> ``` 请将 `<pid>` 替换为实际的进程 ID。该操作将终止指定节点上的 Elasticsearch 实例,完成节点下线过程[^1]。 ### 3.4 验证集群健康状态 在节点下线后,建议检查集群的健康状态以确保所有操作顺利完成: ```bash GET /_cluster/health?pretty ``` 如果集群状态显示为绿色,则表示所有主分片和副本分片均已正确分配,集群处于健康状态。如果状态为黄色或红色,可能需要进一步排查未分配分片的原因,并采取相应措施进行修复[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值