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

配置项作用 #

cluster.auto_shrink_voting_configuration 配置项控制集群是否自动收缩投票配置(Voting Configuration)。当有资格作为主节点的节点加入或离开集群时,此配置决定系统是否自动调整投票配置以维持最佳的容错能力。

配置项类型 #

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

默认值 #

true

是否必需 #

可选配置项(有默认值)

取值范围 #

true 或 false

配置格式 #

# 默认配置(自动收缩)
cluster.auto_shrink_voting_configuration: true

# 禁用自动收缩(手动管理)
cluster.auto_shrink_voting_configuration: false

相关配置项 #

配置项默认值说明
cluster.auto_shrink_voting_configurationtrue自动收缩投票配置
cluster.max_voting_config_exclusions10最大投票排除数

工作原理 #

投票配置自动调整机制:

┌─────────────────────────────────────────────────────────────────┐
│                    投票配置自动调整                                │
└─────────────────────────────────────────────────────────────────┘

节点状态变化
    │
    ├── 主节点离开集群
    │
    ├── 主节点加入集群
    │
    └── 节点故障
        │
        ▼
检查 auto_shrink_voting_configuration
    │
    ├── true(默认)
    │   │
    │   ├── 自动计算最优投票配置
    │   │
    │   ├── 保持至少 3 个投票节点
    │   │     (或当前配置 < 3 时保持 1 个)
    │   │
    │   └── 优先选择在线节点
    │
    └── false
        │
        └── 保持当前配置
            │
            └── 需要手动使用退休 API 管理

收缩规则 #

自动收缩的具体规则:

当前配置节点数 >= 3:
    最小保持: 3 个投票节点
    确保能够容忍一个节点故障

当前配置节点数 < 3:
    最小保持: 1 个投票节点
    确保单节点集群可以运行

投票配置优先级:
    1. 当前主节点(必须保留)
    2. 在线节点(优先于离线节点)
    3. 当前配置中的节点(保持稳定性)
    4. 按 node ID 排序(确定性顺序)

使用场景 #

1. 默认配置(推荐) #

cluster.auto_shrink_voting_configuration: true

适用场景:

  • 大多数集群配置
  • 需要自动容错
  • 频繁节点变更
  • 希望系统自动处理节点故障

2. 手动管理 #

cluster.auto_shrink_voting_configuration: false

适用场景:

  • 需要精确控制投票配置
  • 自定义容错策略
  • 避免自动收缩
  • 特殊业务需求

推荐设置建议 #

集群类型推荐值说明
生产环境true自动容错
测试环境true便于管理
大规模集群true自动调整
特殊需求false手动控制

自动收缩与手动管理对比 #

自动收缩模式 (true):
    优点:
        ✓ 自动适应节点变化
        ✓ 无需手动干预
        ✓ 维持最佳容错能力
        ✓ 减少运维负担

    缺点:
        ✗ 可能不符合特殊需求
        ✗ 自动收缩可能不可预期

手动管理模式 (false):
    优点:
        ✓ 完全控制投票配置
        ✓ 可自定义策略
        ✓ 行为可预测

    缺点:
        ✗ 需要手动管理
        ✗ 可能遗漏重要操作
        ✗ 增加运维复杂度

动态配置示例 #

# 启用自动收缩
PUT /_cluster/settings
{
  "transient": {
    "cluster.auto_shrink_voting_configuration": true
  }
}

# 禁用自动收缩
PUT /_cluster/settings
{
  "transient": {
    "cluster.auto_shrink_voting_configuration": false
  }
}

监控建议 #

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

# 查看投票配置
GET /_cluster/state?filter_path=metadata.coordination.voting_config

# 查看在线主资格节点
GET /_cat/nodes?v&h=name,node.role,master

手动管理投票配置 #

当禁用自动收缩时,可以使用退休 API:

# 1. 添加投票配置排除
POST /_cluster/voting_config_exclusions/node_name

# 2. 等待节点从投票配置移除
GET /_cluster/state?filter_path=metadata.coordination.voting_config_exclusions

# 3. 节点安全移除后,清理排除
DELETE /_cluster/voting_config_exclusions

注意事项 #

  1. 动态更新:此配置为动态配置,可在线修改
  2. 默认启用:默认启用自动收缩,适合大多数场景
  3. 最小节点数:自动收缩保持至少 3 个(或 1 个)投票节点
  4. 主节点优先:当前主节点始终保留在投票配置中
  5. 手动管理:禁用自动收缩时需手动使用退休 API