📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

cluster.routing.allocation.allow_rebalance 配置项控制允许执行分片重新平衡的条件。此配置决定了在什么集群状态下,分片可以自动在节点间迁移以实现负载均衡。

配置项类型 #

该配置项为动态配置,可以在运行时通过集群设置 API 进行修改。

默认值 #

indices_all_active

是否必需 #

可选配置项(有默认值)

可选值 #

说明
always只要分片副本组活跃即可重新平衡
indices_primaries_active所有索引的主分片都活跃后才可重新平衡
indices_all_active所有分片都活跃后才可重新平衡(默认)

配置格式 #

# 默认配置
cluster.routing.allocation.allow_rebalance: indices_all_active

# 更激进的策略
cluster.routing.allocation.allow_rebalance: always

# 保守的策略
cluster.routing.allocation.allow_rebalance: indices_primaries_active

工作原理 #

重新平衡条件检查:

┌─────────────────────────────────────────────────────────────────┐
│                   重新平衡条件检查                              │
└─────────────────────────────────────────────────────────────────┘

触发重新平衡请求
    │
    ▼
检查 allow_rebalance 设置
    │
    ├── always
    │   │
    │   └── 直接允许重新平衡
    │
    ├── indices_primaries_active
    │   │
    │   └── 检查所有主分片是否活跃
    │       │
    │       ├── 全部活跃 → 允许
    │       └── 有未分配 → 拒绝
    │
    └── indices_all_active
        │
        └── 检查所有分片是否活跃
            │
            ├── 全部活跃 → 允许
            └── 有未分配 → 拒绝

使用场景 #

1. 默认配置(推荐生产环境) #

cluster.routing.allocation.allow_rebalance: indices_all_active

特点:

  • 最安全的重新平衡策略
  • 确保数据完全可用后再平衡
  • 适用于生产环境

2. 快速恢复场景 #

cluster.routing.allocation.allow_rebalance: always

特点:

  • 最激进的策略
  • 分片活跃后立即重新平衡
  • 可能导致部分不可用

3. 保守策略 #

cluster.routing.allocation.allow_rebalance: indices_primaries_active

特点:

  • 主分片优先策略
  • 确保数据可读性
  • 副本可能不同步

推荐设置建议 #

环境推荐配置说明
生产环境indices_all_active最安全
快速恢复always尽快平衡
数据迁移indices_primaries_active保证可读性

注意事项 #

  1. 动态更新:此配置为动态配置,可在线修改
  2. 数据可用性:always 策略可能导致短暂不可用
  3. 安全优先:生产环境推荐使用 indices_all_active