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

配置项作用 #

cluster.routing.allocation.disk.include_relocations 配置项用于控制在计算节点磁盘使用量时,是否将正在迁移到该节点的分片大小计入磁盘使用量。

配置项属性 #

  • 配置路径: cluster.routing.allocation.disk.include_relocations
  • 数据类型: boolean
  • 默认值: true
  • 是否可选: 是
  • 是否动态: 是(支持动态更新)
  • 弃用状态: ⚠️ 已弃用,将在未来版本中移除

配置项详解 #

工作机制 #

节点磁盘使用量计算

当 include_relocations = true(默认):
磁盘使用量 = 已存在分片 + 正在迁入的分片

当 include_relocations = false:
磁盘使用量 = 已存在分片

场景说明 #

启用包含重定位(include_relocations = true) #

节点 A 正在接收分片

已存在分片: 80GB
正在迁入的分片: 15GB

计算的磁盘使用量: 80GB + 15GB = 95GB
                              ↓
                    更保守的磁盘估算
                    避免磁盘空间不足

禁用包含重定位(include_relocations = false) #

节点 A 正在接收分片

已存在分片: 80GB
正在迁入的分片: 15GB(不计入)

计算的磁盘使用量: 80GB
                              ↓
                    更激进的分配策略
                    可能导致磁盘空间不足

分配决策影响 #

此配置影响 DiskThresholdDecider 的决策:

  • true: 更保守,确保有足够空间容纳所有正在进行的迁移
  • false: 更激进,只考虑已完成的分片,可能触发更多分片迁入

配置建议 #

⚠️ 重要提示 #

此配置项已被标记为弃用,将在未来版本中移除。建议:

  • 保持默认值: 继续使用 true,这是最安全的配置
  • 为未来升级准备: 未来版本可能会固定使用 true 的行为

生产环境 #

cluster.routing.allocation.disk.include_relocations: true

建议: 保持默认值 true。这确保了磁盘空间计算的准确性,避免因正在进行迁移的分片导致磁盘空间不足。

代码示例 #

easysearch.yml 配置 #

cluster:
  routing:
    allocation:
      disk:
        include_relocations: true  # 默认值,推荐保持

动态更新(不推荐,已弃用) #

PUT _cluster/settings
{
  "transient": {
    "cluster.routing.allocation.disk.include_relocations": false
  }
}
# 警告:此配置已弃用

相关配置 #

配置项作用默认值
cluster.routing.allocation.disk.watermark.low磁盘低水位线85%
cluster.routing.allocation.disk.watermark.high磁盘高水位线90%
cluster.routing.allocation.disk.threshold_enabled是否启用磁盘阈值检查true

行为对比 #

include_relocations磁盘计算方式分配行为
true包含正在迁入的分片更保守,防止超额分配
false不包含正在迁入的分片更激进,可能超额分配

示例场景 #

假设节点有 100GB 磁盘空间,当前已使用 80GB,水位线设置为 90%:

设置正在迁入计算使用率是否允许新分片迁入
true15GB(80+15)/100 = 95%❌ 否(超过90%)
false15GB80/100 = 80%✅ 是(低于90%)

注意事项 #

  1. 已弃用: 此配置项已被标记为弃用,将在未来版本中移除。

  2. 默认行为: 默认值 true 是最安全的配置,建议保持不变。

  3. 升级影响: 未来版本升级时,此配置将被移除,系统行为将固定为 true

  4. 磁盘安全: 保持 true 可以防止因正在进行的迁移导致磁盘空间不足。

  5. 重路由间隔: 配合 cluster.routing.allocation.disk.reroute_interval 使用,控制重路由的频率。