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

ElasticSearch配置详解:什么是重平衡

什么是集群重平衡

集群重平衡(Cluster Rebalancing) 是Elasticsearch自动调整分片分布的机制,目的是在集群中所有节点间均匀分配分片,以实现:

  • 负载均衡
  • 存储空间均衡
  • 查询性能优化
  • 集群资源最大化利用

重平衡触发场景

重平衡通常在以下情况下自动触发:

  1. 节点变化

    • 新节点加入集群
    • 节点离开或宕机
    • 节点重启
  2. 分片分布不均

    • 某些节点分片过多
    • 某些节点存储空间不足
    • 新索引创建后的分片分配
  3. 集群配置变更

    • 副本数量调整
    • 分片分配规则修改

重平衡设置选项

cluster.routing.rebalance.enable 参数详解
"cluster.routing.rebalance.enable": "all"

可选值说明:

说明适用场景
all允许所有分片重平衡(默认)正常运行状态
primaries只允许主分片重平衡副本恢复时减少负载
replicas只允许副本分片重平衡主分片稳定时优化副本分布
none完全禁用重平衡维护期间或紧急情况

相关控制参数

1. 重平衡并发控制
"cluster.routing.allocation.cluster_concurrent_rebalance": "2"
  • 控制整个集群同时进行重平衡的分片数量
  • 数值越大重平衡越快,但消耗更多资源
2. 重平衡阈值设置
"cluster.routing.rebalance.weight.index": "55%"
"cluster.routing.rebalance.weight.shard": "45%"
  • 控制何时触发重平衡的阈值
  • 基于索引分布和分片数量的权重
3. 磁盘使用阈值
"cluster.routing.allocation.disk.threshold_enabled": true
"cluster.routing.allocation.disk.watermark.low": "85%"
"cluster.routing.allocation.disk.watermark.high": "90%"
  • 当磁盘使用率超过阈值时触发重平衡

重平衡过程

1. 评估阶段├── 分析当前分片分布├── 计算节点负载差异└── 确定重平衡目标2. 决策阶段├── 选择需要移动的分片├── 确定目标节点└── 生成重平衡计划3. 执行阶段├── 在目标节点创建分片副本├── 同步数据└── 删除原节点分片

实际应用场景

场景1:节点扩容
# 添加新节点后,启用重平衡自动分配分片
PUT /_cluster/settings
{"persistent": {"cluster.routing.rebalance.enable": "all"}
}
场景2:维护期间
# 维护期间禁用重平衡,避免不必要的分片移动
PUT /_cluster/settings
{"transient": {"cluster.routing.rebalance.enable": "none"}
}
场景3:紧急恢复
# 只允许主分片重平衡,优先保证数据可用性
PUT /_cluster/settings
{"transient": {"cluster.routing.rebalance.enable": "primaries"}
}

监控重平衡状态

# 查看重平衡进度
GET /_cat/recovery?v&active_only=true# 查看分片分布
GET /_cat/shards?v&s=node# 查看集群健康状态
GET /_cluster/health?level=shards

最佳实践建议

  1. 正常运行: 保持 "enable": "all"
  2. 维护期间: 临时设置为 "none"
  3. 性能调优: 根据集群规模调整并发数量
  4. 监控告警: 设置重平衡时间过长的告警
  5. 计划变更: 在业务低峰期进行集群变更操作

重平衡是Elasticsearch自动维护集群健康和性能的重要机制,合理配置这些参数可以显著提升集群的稳定性和性能。

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

相关文章:

  • 【MySQL 从 0 讲解系列】深入理解 GROUP BY 的本质与应用(含SQL示例+面试题)
  • 无刷直流电机控制系统仿真建模
  • 修仙处于平凡
  • 用Python撬动量化交易:深入探索开源利器vnpy
  • 彻底禁用Windows Defender通知和图标
  • Python基础数据类型与运算符全面解析
  • FaceFusion 技术深度剖析:核心算法与实现机制揭秘
  • 代码随想录算法训练营第60期第六十五天打卡
  • qt初识--01
  • OCR(光学字符识别)算法
  • IAR开发平台升级Arm和RISC-V开发工具链,加速现代嵌入式系统开发
  • 电机专用32位MCU PY32MD310,QFN32封装,内置多功能栅极驱动器
  • EtherCAT至TCP/IP异构网络互联:施耐德M580 PLC对接倍福CX5140解决方案
  • Vulkan学习笔记1—环境搭建
  • Spring Data MongoDB 提供了哪些核心组件?
  • AI服务代码说明文档
  • 计算机网络 : 应用层协议HTTP
  • 【C++特殊工具与技术】优化内存分配(五):显式析构函数的调用
  • 紫光展锐T8300以创新音频技术重塑感知世界
  • 【MySQL数据库 | 第三篇】DDL数据库操作
  • OpenGL ES绘制3D图形以及设置视口
  • 【排错】ubuntu挂载硬盘mount报错 unknown filesystem type ‘LVM2_member‘.
  • 基于STM32音频频谱分析设计
  • [HarmonyOSNext鸿蒙开发]11.ArkUI框架:Swiper、Grid布局与代码复用实战指南
  • GIS局部放电在线监测系统的设计与应用
  • LinkedHashMap
  • Mac电脑 SSH客户端 - Termius
  • Flutter Container 组件详解
  • ROS2加持,SU17实现全控制链路再进化
  • 虚拟机新增硬盘,与数据挂载