当前位置: 首页 > ds >正文

Elasticsearch 集群节点下线方案

Elasticsearch 集群节点下线方案

在 Elasticsearch(ES)集群中,节点(Node)下线可能会影响数据的可用性和集群的健康状态。因此,正确的下线步骤需要确保数据不会丢失,并且不会影响查询或写入。


🔍 1. 确定要下线的节点

首先,找到即将下线的节点:

curl -XGET "http://<ES_HOST>:9200/_cat/nodes?v"

示例输出:

ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
192.168.1.101          65          50   3    0.12    0.15     0.20   mdi         *      node-1
192.168.1.102          70          55   2    0.10    0.12     0.18   mdi                node-2
192.168.1.103          60          48   1    0.08    0.10     0.15   mdi                node-3

📌 注意

  • mdi:m(Master-Eligible),d(Data Node),i(Ingest Node)
  • * 表示当前的 Master 节点

确保不要误下线 Master 节点,除非你计划先选举新的 Master。


🔍 2. 将节点标记为不再接收新数据

在集群中下线节点前,应该避免它继续接收新数据:

curl -XPUT "http://<ES_HOST>:9200/_cluster/settings" -H "Content-Type: application/json" -d '
{"persistent": {"cluster.routing.allocation.exclude._name": "node-2"}
}'

📌 这个操作会让 Elasticsearch 逐步把 node-2 上的分片(Shard)迁移到其他节点。


🔍 3. 监控分片迁移进度

使用以下命令查看分片是否已经迁移完毕:

curl -XGET "http://<ES_HOST>:9200/_cat/health?v"
curl -XGET "http://<ES_HOST>:9200/_cat/shards?v"

当所有分片的 STARTED 状态不再显示 node-2,说明数据已安全迁移。


🔍 4. 移除节点

当数据迁移完成后,可以让节点主动退出集群:

curl -XPOST "http://<NODE_IP>:9200/_cluster/nodes/_local/_shutdown"

或者直接停止该节点的 Elasticsearch 进程:

systemctl stop elasticsearch

如果是 Kubernetes 部署:

kubectl delete pod <node-2-pod> -n <namespace>

🔍 5. 确保集群健康

下线后,检查集群状态:

curl -XGET "http://<ES_HOST>:9200/_cat/health?v"

如果状态仍然是 green,则说明集群已经成功完成节点下线过程。


🔍 6. 清理下线节点信息

如果 node-2 永久下线,不再加入集群,可以清理它的配置:

curl -XPUT "http://<ES_HOST>:9200/_cluster/settings" -H "Content-Type: application/json" -d '
{"persistent": {"cluster.routing.allocation.exclude._name": null}
}'

📌 这样可以让 Elasticsearch 允许新节点加入,并重新平衡分片。


🚀 总结

步骤操作
确认节点curl -XGET "http://<ES_HOST>:9200/_cat/nodes?v"
迁移数据curl -XPUT ... exclude._name": "node-2"
监控迁移curl -XGET "http://<ES_HOST>:9200/_cat/shards?v"
停止节点systemctl stop elasticsearchkubectl delete pod
检查健康curl -XGET "http://<ES_HOST>:9200/_cat/health?v"
清理信息curl -XPUT ... exclude._name": null

📌 建议:如果你的集群只有 1-3 个节点,建议谨慎操作,确保至少有 2 个 Master-Eligible 节点保持在线!

http://www.xdnf.cn/news/1509.html

相关文章:

  • 新市场环境下新能源汽车电流传感技术发展前瞻
  • 开源项目实战学习之YOLO11:项目结构及功能分析(一)
  • Shell编程学习笔记1-Shell入门
  • 【漫话机器学习系列】219.支持向量机分类器(Support Vector Classifier)
  • Java并发编程之CompletableFuture原理与实践
  • Linux系统编程 day10 接着线程(中期头大,还要写论文)
  • 钧瓷产业原始创新的许昌共识:技术破壁·产业再造·生态重构(一)
  • C++入门基础知识110—【关于C++嵌套 if 语句】
  • 使用 LangChain 掌握检索增强生成 (RAG) 的终极指南:6、索引
  • Linux:41线程控制lesson29
  • Linux安全防护:全方位服务安全配置指南
  • gem5教程第六章 为ARM扩展gem5 这也是改进gem5的一个基础
  • STM32F103 “BluePill” 上的 DMA 原理与实践
  • 「ES数据迁移可视化工具(Python实现)」支持7.x索引数据互传
  • unity游戏开发之 拖放教程2D
  • 代理ip池有哪些类型?代理IP池的定义、特点与使用场景
  • leetcode0099. 恢复二叉搜索树- medium
  • 在基于Transformer的LLM中,将越重要的提示词前置,对生成效果越好吗
  • LeetCode算法题(Go语言实现)_58
  • 122.在 Vue3 中使用 OpenLayers 实现图层层级控制(zIndex)显示与设置详解
  • CIFAR-10图像分类学习笔记(一)
  • vim的.vimrc配置
  • 【Java面试笔记:基础】11.Java提供了哪些IO方式? NIO如何实现多路复用?
  • 哪些心电图表现无缘事业编体检呢?
  • Linux程序地址空间
  • 【maven-7.1】POM文件中的属性管理:提升构建灵活性与可维护性
  • 《Cesium 中两点绘制线的实现:实线、虚线、动态线、流动线详解》
  • 元素滚动和内容垂直居中同时存在,完美的 html 元素垂直居中的方法flex + margin: auto
  • Java 中 String 转 Integer 的方法与底层原理详解
  • Elasticsearch(ES)中的脚本(Script)