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

配置项作用 #

gateway.recover_after_nodes 配置项用于指定集群恢复状态所需要的最少节点总数(包括主节点和数据节点)。

当集群启动时,只有在达到指定数量的节点后,才会开始恢复集群状态。

配置项属性 #

  • 配置路径: gateway.recover_after_nodes
  • 数据类型: integer
  • 默认值: -1(表示禁用此条件)
  • 最小值: -1
  • 是否可选: 是
  • 弃用状态: ⚠️ 已弃用

配置项详解 #

工作机制 #

集群启动过程
    │
    ↓
读取配置 recover_after_nodes = 5
    │
    ↓
检测当前节点总数(主节点 + 数据节点)
    │
    ├──────── 当前数量 < 配置数量
    │              │
    │              ↓
    │         不开始恢复,继续等待
    │              │
    │              ↓
    │         [调试日志] 节点数量不足
    │              │
    │              ↓
    │         等待更多节点加入...
    │
    └──────── 当前数量 ≥ 配置数量
                   │
                   ↓
              开始恢复集群状态

决策逻辑 #

// 简化的代码逻辑
if (recoverAfterNodes != -1) {
    int totalNodes = nodes.getMasterAndDataNodes().size();
    if (totalNodes < recoverAfterNodes) {
        // 不开始恢复
        logger.debug("not recovering from gateway, nodes_size (data+master) [{}] < recover_after_nodes [{}]",
                     totalNodes, recoverAfterNodes);
        return;
    }
}
// 开始恢复

配置建议 #

⚠️ 重要提示 #

此配置项已被标记为弃用,建议使用以下更精确的替代方案:

  1. 控制数据节点数量: 使用 gateway.recover_after_data_nodes
  2. 控制主节点数量: 使用 gateway.recover_after_master_nodes

使用替代配置(推荐) #

# 推荐使用以下配置替代

gateway:
  # 分别控制数据节点和主节点数量
  recover_after_data_nodes: 3
  recover_after_master_nodes: 2

代码示例 #

easysearch.yml 配置(已弃用) #

# 不推荐使用此配置
gateway:
  recover_after_nodes: 5  # 期望 5 个节点才开始恢复

推荐的替代配置 #

gateway:
  # 分别控制数据节点和主节点
  recover_after_data_nodes: 3
  recover_after_master_nodes: 2

  # 配合超时使用
  recover_after_time: 5m

完整的恢复配置 #

cluster:
  discovery:
    zen:
      minimum_master_nodes: 2

gateway:
  # 使用更精确的配置
  recover_after_data_nodes: 3
  recover_after_master_nodes: 2
  recover_after_time: 10m

相关配置 #

配置项状态作用
gateway.recover_after_nodes⚠️ 已弃用恢复所需的总节点数量
gateway.recover_after_data_nodes✅ 推荐恢复所需的数据节点数量
gateway.recover_after_master_nodes⚠️ 已弃用恢复所需的主节点数量
gateway.recover_after_time✅ 推荐恢复等待的超时时间

为什么弃用 #

旧配置(过于简单):
recover_after_nodes: 5
    ↓
只控制总节点数,无法区分节点类型

新配置(更精确):
recover_after_data_nodes: 3
recover_after_master_nodes: 2
    ↓
可以精确控制不同类型节点的数量

使用场景 #

原本的使用场景(已弃用) #

此配置原适用于以下场景:

  • 小型集群: 节点类型区分不明确的小型部署
  • 简单控制: 只需要简单控制总节点数
  • 逐步启动: 确保大部分节点上线后再恢复

推荐的替代方案 #

需求推荐配置
确保数据可用性gateway.recover_after_data_nodes
确保主节点冗余gateway.recover_after_master_nodesdiscovery.zen.minimum_master_nodes
超时强制恢复gateway.recover_after_time

配置对比 #

旧配置方式(已弃用) #

gateway:
  recover_after_nodes: 5
  # 问题:无法区分是 3 数据 + 2 主节点,还是 4 数据 + 1 主节点

新配置方式(推荐) #

gateway:
  recover_after_data_nodes: 3   # 确保至少 3 个数据节点
  recover_after_master_nodes: 2 # 确保至少 2 个主节点
  # 更精确的控制

注意事项 #

  1. 已弃用: 此配置已被弃用,建议使用更精确的替代配置。

  2. 包含所有节点: 此配置计算的是主节点和数据节点的总数。

  3. 默认禁用: 默认值为 -1,表示此条件被禁用。

  4. 不够精确: 无法区分数据节点和主节点的具体数量要求。

  5. 动态更新: 此配置不支持动态更新。

  6. 迁移建议: 如果使用此配置,建议迁移到:

    • gateway.recover_after_data_nodes
    • gateway.recover_after_master_nodes
    • discovery.zen.minimum_master_nodes
  7. 配合使用: 可以与 recover_after_time 配合使用,实现超时强制恢复。