Elasticsearch 分片迁移与重新平衡监控指南 📅 发布时间:2026/7/6 22:41:13 👁️ 浏览次数: 目录标题Elasticsearch 分片迁移与重新平衡监控指南目录概述环境信息当前集群状态Kubernetes 集群节点分片重新平衡机制ES 默认平衡策略分片状态流转查看分片迁移的命令1. 查看集群健康状态2. 查看所有分片状态3. 查看迁移进度最详细4. 只看正在进行的迁移5. 查看节点分配统计6. 查看集群平衡设置7. 在 Kubernetes 环境中执行实际案例分析案例节点 es-data-3 加入集群时间线日志记录分片分布变化分片迁移详情实时监控迁移进度持续监控命令查看迁移日志手动触发分片迁移方法1: 排除节点方法2: 调整平衡配置方法3: 手动移动分片常见问题Q1: 为什么新节点加入后没有立即开始迁移Q2: es-data-4 为什么一直是 Pending 状态Q3: 如何加快分片迁移速度Q4: 迁移过程中对服务有影响吗Q5: 如何取消正在进行的迁移附录快速参考命令表相关配置参数Elasticsearch 分片迁移与重新平衡监控指南目录概述环境信息分片重新平衡机制查看分片迁移的命令实际案例分析常见问题概述当 Elasticsearch 集群添加或移除节点时会自动触发分片重新平衡Rebalancing以实现负载均衡- 分片均匀分布到各节点高可用性- 主分片和副本分片分布在不同节点性能优化- 充分利用新节点的存储和计算资源环境信息当前集群状态集群名称状态节点数分片数备注es-dcdc4a67green220es-data-2 PendingKubernetes 集群节点NAME STATUS ROLES AGE VERSION qfusion1 Ready control-plane,master 21d v1.24.10 qfusion2 Ready control-plane,master 21d v1.24.10 qfusion3 Ready control-plane,master 21d v1.24.10 qfusion4 Ready none 21d v1.24.10分片重新平衡机制ES 默认平衡策略┌─────────────────────────────────────────────────────────────────┐ │ Elasticsearch 平衡决策 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 1. 节点加入检测 2. 平衡计算 3. 分片迁移 │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ 新节点加入 │ ── │ 计算差异 │── │ 迁移分片 │ │ │ │ 触发重平衡 │ │ 调度决策 │ │ 恢复副本 │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ │ │ 平衡考虑因素: │ │ • 每个节点的分片数量均衡 │ │ • 磁盘使用率均衡 │ │ • 副本分片与主分片不在同一节点 │ │ • 数据量大小避免迁移大分片 │ │ │ └─────────────────────────────────────────────────────────────────┘分片状态流转INITIALIZING ── RELOCATING ── STARTED ↑ ↑ ↑ │ │ │ 正在初始化 正在迁移 正常运行状态说明STARTED正常运行可提供服务RELOCATING正在迁移到其他节点INITIALIZING正在初始化新建分片UNASSIGNED未分配可能资源不足查看分片迁移的命令1. 查看集群健康状态curl-u elastic:passwordlocalhost:9200/_cluster/health?pretty输出示例{cluster_name:es-dcdc4a67,status:green,number_of_nodes:2,number_of_data_nodes:2,active_primary_shards:10,active_shards:20,relocating_shards:0,// 正在迁移的分片数initializing_shards:0,// 正在初始化的分片数unassigned_shards:0// 未分配的分片数}关键字段字段说明relocating_shards0 表示有迁移正在进行initializing_shards正在初始化的分片数unassigned_shards未分配的分片数异常2. 查看所有分片状态curl-u elastic:passwordlocalhost:9200/_cat/shards?v输出示例index shard prirep state docs store ip node test_index_01 0 p STARTED 9000 345kb 10.255.253.41 es-data-0 test_index_01 0 r STARTED 9000 345kb 10.255.253.67 es-data-1 test_index_02 0 p RELOCATING 9000 230kb 10.255.253.41 es-data-0 test_index_02 0 r STARTED 9000 345kb 10.255.253.67 es-data-13. 查看迁移进度最详细curl-u elastic:passwordlocalhost:9200/_cat/recovery?v输出示例index shard time type stage source_node target_node bytes bytes_pct files files_pct myindex 0 45s RELOCATION final node-0 node-3 150.2mb 100.0% 12 100.0% myindex 1 30s RELOCATION translog node-1 node-3 89.5mb 85.3% 8 90.0%字段说明typeRELOCATION 迁移REPLICA 副本恢复stageinit初始化→ translog事务日志→ finalize完成bytes_pct数据传输进度百分比source_node源节点target_node目标节点4. 只看正在进行的迁移curl-u elastic:passwordlocalhost:9200/_cat/recovery?vactive_onlytrue5. 查看节点分配统计curl-u elastic:passwordlocalhost:9200/_cat/allocation?v输出示例shards disk.indices disk.used disk.avail disk.total disk.percent host ip node 12 83.3mb 102.1gb 97.7gb 199.9gb 51 245.0.2.130 245.0.2.130 es-data-3 11 42.5mb 110.2gb 79.7gb 189.9gb 58 245.0.3.73 245.0.3.73 es-data-1 12 2.4mb 22.6gb 177.2gb 199.9gb 11 10.255.254.189 10.255.254.189 es-data-0 11 134.9mb 91.4gb 108.4gb 199.9gb 45 245.0.1.150 245.0.1.150 es-data-26. 查看集群平衡设置curl-u elastic:passwordlocalhost:9200/_cluster/settings?flat_settingstrue7. 在 Kubernetes 环境中执行# 设置环境变量exportKUBECONFIG/bpx/.148-admin.conf# 获取密码PASSWORD$(kubectl get secret -n qfusion-admin es-dcdc4a67-es-elastic-user -ojsonpath{.data.elastic}|base64 -d)# 查看集群状态kubectlexec-n qfusion-admin es-dcdc4a67-es-data-0 --curl-s -u elastic:$PASSWORDlocalhost:9200/_cluster/health?pretty# 查看分片迁移kubectlexec-n qfusion-admin es-dcdc4a67-es-data-0 --curl-s -u elastic:$PASSWORDlocalhost:9200/_cat/recovery?v实际案例分析案例节点 es-data-3 加入集群时间线时间事件02:08:32es-data-3 加入集群02:08:34集群状态更新版本 222002:08:35新索引开始分配到新节点日志记录[es-data-3] master node changed {previous [], current [...es-data-2...]} [es-data-2] node-join[{es-data-3}... join existing leader] [es-data-0] added {es-data-3}, term: 5, version: 2220分片分布变化加入前3节点节点分片数es-data-015es-data-115es-data-216加入后4节点节点分片数es-data-012es-data-111es-data-211es-data-312分片迁移详情分片迁移前迁移后filebeat 主分片es-data-2es-data-3test_index_02 主分片(新建)es-data-3test_index_08 主分片(新建)es-data-3实时监控迁移进度持续监控命令# 方法1: 使用 watchwatch-n1curl -s -u elastic:pass localhost:9200/_cat/recovery?vactive_onlytrue# 方法2: 使用 while 循环whiletrue;doclearecho$(date)curl-s -u elastic:passlocalhost:9200/_cat/recovery?vsleep2done# 方法3: 在 Kubernetes 中kubectlexec-n qfusion-adminpod--bash-c while true; do curl -s -u elastic:pass localhost:9200/_cat/recovery?vactive_onlytrue sleep 1 done 查看迁移日志# 查看 Pod 日志中的迁移记录kubectl logs -n qfusion-adminpod-name-c elasticsearch --tail500|grep-irelocat# 查看 ES 日志文件kubectlexec-n qfusion-adminpod-name--tail-f /usr/share/elasticsearch/logs/es-dcdc4a67.log手动触发分片迁移方法1: 排除节点# 排除特定节点触发迁移出该节点curl-u elastic:pass -X PUTlocalhost:9200/_cluster/settings-HContent-Type: application/json-d { transient: { cluster.routing.allocation.exclude._name: es-data-0 } }# 取消排除curl-u elastic:pass -X PUTlocalhost:9200/_cluster/settings-HContent-Type: application/json-d { transient: { cluster.routing.allocation.exclude._name: } }方法2: 调整平衡配置# 启用自动平衡curl-u elastic:pass -X PUTlocalhost:9200/_cluster/settings-HContent-Type: application/json-d { transient: { cluster.routing.rebalance.enable: all } }# 调整并发迁移数curl-u elastic:pass -X PUTlocalhost:9200/_cluster/settings-HContent-Type: application/json-d { transient: { cluster.routing.allocation.cluster_concurrent_rebalance: 3 } }方法3: 手动移动分片# 将特定分片移动到指定节点curl-u elastic:pass -X POSTlocalhost:9200/_cluster/reroute-HContent-Type: application/json-d { commands: [ { move: { index: test_index, shard: 0, from_node: node-1, to_node: node-2 } } ] }常见问题Q1: 为什么新节点加入后没有立即开始迁移A:ES 会根据以下因素决定是否迁移磁盘使用率差异分片数量差异数据量大小避免迁移大分片影响性能可以通过以下配置调整curl-u elastic:pass -X PUTlocalhost:9200/_cluster/settings-HContent-Type: application/json-d { transient: { cluster.routing.allocation.balance.shard: 0.45, cluster.routing.allocation.balance.index: 0.55, cluster.routing.allocation.balance.threshold: 1.0 } }Q2: es-data-4 为什么一直是 Pending 状态A:Pod Anti-Affinity 调度失败集群只有 4 个节点ES 配置了 Pod 反亲和性每个 ES 节点必须在不同 K8s 节点上第 5 个 ES 节点无法调度解决方案添加新的 Kubernetes 节点或调整 Pod 反亲和性配置或减少 ES 数据节点数量Q3: 如何加快分片迁移速度A:调整并发恢复参数curl-u elastic:pass -X PUTlocalhost:9200/_cluster/settings-HContent-Type: application/json-d { transient: { cluster.routing.allocation.node_concurrent_recoveries: 6, cluster.routing.allocation.node_initial_primaries_recoveries: 4, indices.recovery.max_bytes_per_sec: 100mb } }Q4: 迁移过程中对服务有影响吗A:副本分片迁移无影响服务正常主分片迁移短暂影响毫秒级自动切换到副本Q5: 如何取消正在进行的迁移A:# 取消特定分片的迁移curl-u elastic:pass -X POSTlocalhost:9200/_cluster/reroute-HContent-Type: application/json-d { commands: [ { cancel: { index: test_index, shard: 0, node: target_node, allow_primary: false } } ] }附录快速参考命令表操作命令查看集群状态curl -u elastic:pass /_cluster/health?pretty查看分片列表curl -u elastic:pass /_cat/shards?v查看迁移进度curl -u elastic:pass /_cat/recovery?v查看节点分配curl -u elastic:pass /_cat/allocation?v查看节点列表curl -u elastic:pass /_cat/nodes?v查看集群设置curl -u elastic:pass /_cluster/settings?flat_settingstrue相关配置参数参数默认值说明cluster.routing.rebalance.enableall启用平衡类型cluster.routing.allocation.cluster_concurrent_rebalance2集群并发平衡数cluster.routing.allocation.node_concurrent_recoveries2节点并发恢复数indices.recovery.max_bytes_per_sec40mb恢复速度限制cluster.routing.allocation.balance.shard0.45分片平衡权重cluster.routing.allocation.balance.index0.55索引平衡权重cluster.routing.allocation.balance.threshold1.0平衡阈值文档版本: 1.0最后更新: 2026-01-30适用版本: Elasticsearch 7.16.2
Node.js、npm、node、nvm的区别 1. Node.js 让JavaScript脱离浏览器,能运行在服务器/本地终端 举个🌰: 你写了一个app.js文件(里面是console.log(hello)),没有Node.js的话,这个文件只能在浏览器里运行;有了Node.… 2026/5/17 1:15:55
Comsol 中相场方法与水平集方法在多孔介质驱替模拟的应用 comsol基于相场方法(/水平集方法)的多孔介质中的驱替模拟 提供基于comsol中相场方法模拟多孔介质两相驱替(水气、油水等等)的算例(也可以定做水平集驱替的算例),可在此基础上学会利用comsol软件… 2026/7/6 4:30:13
类脑计算机“悟空”现身!脉冲神经网络(SNN)从理论到代码实现(20亿神经元长啥样) 文章目录一、先搞懂:SNN为啥比传统神经网络“像脑子”?二、核心原理不用背:3个关键点讲透三、实战代码:100行实现简易SNN(附注释)四、聊点干货:SNN和“悟空”的未来潜力最近科技圈炸锅了——咱们… 2026/5/17 1:15:54
【Linux系统管理】从Shell脚本到容器云:Linux运维学习心得 前言 《Linux系统管理》是我这学期投入时间最多的课程之一。从最基础的Shell脚本语法,一路学到云计算平台搭建和Docker容器化部署,14个章节、18份课件完整覆盖了Linux运维从入门到进阶的全链路知识。 这篇文章按课程三大模块梳理核心知识点和实验心得&… 2026/7/7 9:56:37
IPXWrapper完整指南:让经典游戏在现代Windows系统上重获联机能力 IPXWrapper完整指南:让经典游戏在现代Windows系统上重获联机能力 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 你是否曾经试图在Windows 10或11上重温《星际争霸》《红色警戒2》或《魔兽争霸2》等经典游戏… 2026/7/7 9:54:36
记录一次服务卡顿 1、之前系统使用正常,突然每天下午就很卡,尤其打开文件操作。2、最终定位问题为,服务器磁盘IO太频繁,IO阻塞导致的。3、机械硬盘IO响应时间≤50ms,快速硬盘SSDIO响应时间≤20ms,目前系统的响应均200ms左右。… 2026/7/7 9:54:36
如何用嘎嘎降AI处理会计学论文:会计学毕业论文降AI免费4.8元完整操作教程 如何用嘎嘎降AI处理会计学论文:会计学毕业论文降AI免费4.8元完整操作教程 整理了会计学论文降AI教程完整操作流程,踩过的坑都在里面。主推嘎嘎降AI(www.aigcleaner.com),4.8元,知网维普万方都能过。 操作前… 2026/7/7 9:54:36
Redis 缓存一致性:向量搜索场景下缓存失效的三种策略及其代价 Redis 缓存一致性:向量搜索场景下缓存失效的三种策略及其代价 一、深度引言与场景痛点 Redis 在 RAG 系统里的角色,就像你办公桌上的"便利贴"——把常用的东西贴在触手可及的地方,免得每次都翻箱倒柜。在向量检索场景中,… 2026/7/7 9:52:36
终极免费!Forza Mods AIO:地平线4/5游戏修改器完全指南 终极免费!Forza Mods AIO:地平线4/5游戏修改器完全指南 【免费下载链接】Forza-Mods-AIO Free and open-source FH4 & FH5 mod tool 项目地址: https://gitcode.com/gh_mirrors/fo/Forza-Mods-AIO 你是否渴望在《极限竞速:地平线》… 2026/7/7 9:50:35
Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践 1. 项目概述:Acunetix v24.8 高级版漏洞扫描器深度解析作为一名在网络安全领域摸爬滚打多年的老兵,我深知一款趁手的“兵器”对于安全测试工作意味着什么。今天要聊的,就是Web应用安全测试领域里一个响当当的名字——Acunetix。特别是其v24.8… 2026/7/7 0:01:11
如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南 如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是… 2026/7/7 0:03:13
Jailhouse-gui可视化管理工具:让多核处理器分区变得简单高效 Jailhouse-gui可视化管理工具:让多核处理器分区变得简单高效 【免费下载链接】Jailhouse-gui A graphical user interface (GUI) tool for configuring and managing Jailhouse, a Linux-based hypervisor for partitioning multicore processors into isolated cel… 2026/7/7 0:03:13
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/6 8:43:22
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/6 7:29:49
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/6 7:29:51