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

配置项作用 #

cluster.routing.allocation.node_initial_primaries_recoveries 配置项控制每个节点上允许同时进行的初始主分片恢复操作的最大数量。初始主分片恢复是指从本地存储、快照或本地分片恢复主分片的过程,不涉及从其他节点复制数据。

配置项类型 #

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

默认值 #

4

是否必需 #

可选配置项(有默认值)

取值范围 #

0 ~ 正整数

配置格式 #

# 默认配置
cluster.routing.allocation.node_initial_primaries_recoveries: 4

# 增加并发恢复数量
cluster.routing.allocation.node_initial_primaries_recoveries: 8

# 限制恢复操作
cluster.routing.allocation.node_initial_primaries_recoveries: 2

# 不限制恢复
cluster.routing.allocation.node_initial_primaries_recoveries: 20

相关配置项 #

配置项默认值说明
cluster.routing.allocation.node_initial_primaries_recoveries4初始主分片恢复数量
cluster.routing.allocation.node_concurrent_recoveries2总体并发恢复数量
cluster.routing.allocation.node_concurrent_incoming_recoveries2入站恢复数量

工作原理 #

初始主分片恢复机制:

┌─────────────────────────────────────────────────────────────────┐
│              初始主分片恢复并发控制                              │
└─────────────────────────────────────────────────────────────────┘

主分片分配请求
    │
    ▼
检查恢复来源类型
    │
    ├── 从本地存储恢复
    │   │
    │   └── 计入 node_initial_primaries_recoveries
    │
    ├── 从快照恢复
    │   │
    │   └── 计入 node_initial_primaries_recoveries
    │
    └── 从本地分片恢复(Shrink/Split)
        │
        └── 计入 node_initial_primaries_recoveries
             │
             ▼
    检查当前初始恢复数量
             │
             ├── 当前数量 < node_initial_primaries_recoveries
             │   │
             │   └── 允许恢复
             │
             └── 当前数量 >= node_initial_primaries_recoveries
                 │
                 └── 节流,延迟恢复

恢复类型说明 #

1. 初始主分片恢复(Initial Primary Recovery) #

主分片从以下来源恢复:

  • 本地存储:节点重启后从磁盘加载已有分片
  • 快照仓库:从备份快照恢复分片
  • 本地分片操作:Shrink、Split 等操作后的恢复

2. 对比:副本恢复(Replica Recovery) #

副本分片从其他节点复制数据,受 node_concurrent_incoming_recoveries 控制。

使用场景 #

1. 默认配置(推荐) #

cluster.routing.allocation.node_initial_primaries_recoveries: 4

适用于大多数场景,特别是:

  • 集群重启后的恢复
  • 从快照恢复索引

2. 高性能存储环境 #

cluster.routing.allocation.node_initial_primaries_recoveries: 10

适用场景:

  • NVMe SSD 存储
  • 需要快速恢复服务
  • 集群规模较大

3. 资源受限环境 #

cluster.routing.allocation.node_initial_primaries_recoveries: 2

适用场景:

  • HDD 存储
  • 内存有限
  • 避免启动时过载

4. 从快照批量恢复 #

# 临时提高恢复速度
cluster.routing.allocation.node_initial_primaries_recoveries: 15

恢复完成后可以调回默认值。

推荐设置建议 #

场景推荐值说明
默认/通用4平衡性能和资源使用
NVMe SSD8-15高性能可提高并发
SATA SSD4-6中等性能
HDD2-4避免磁盘过载
大规模集群重启6-10加快恢复速度

监控建议 #

# 查看当前配置
GET /_cluster/settings?filter_path=*.cluster.routing.allocation.node_initial_primaries_recoveries

# 查看正在恢复的分片
GET /_cat/recovery?v&h=i,s,t,bytes_percent,stage

# 查看节点恢复状态
GET /_nodes/stats/indices?filter_path=nodes.*.indices.shards

# 查看集群健康状态
GET /_cluster/health

与其他恢复配置的区别 #

配置项控制对象恢复类型默认值
node_initial_primaries_recoveries主分片本地/快照恢复4
node_concurrent_incoming_recoveries副本分片从其他节点接收2
node_concurrent_outgoing_recoveries源节点向其他节点发送2

注意事项 #

  1. 动态更新:此配置为动态配置,可在线修改
  2. 独立控制:此配置独立于 node_concurrent_recoveries
  3. 启动场景:集群重启时会触发大量初始恢复
  4. 快照恢复:从快照恢复大量数据时可临时调高此值
  5. 资源监控:恢复期间监控 CPU、磁盘 I/O 和网络使用情况