管理集群投票配置排除列表,用于添加或清除被排除的节点,使其不再参与集群的投票和领导选举。
API #
POST /_cluster/voting_config_exclusions
DELETE /_cluster/voting_config_exclusions
API 的作用 #
POST /_cluster/voting_config_exclusions #
添加节点到集群投票配置排除列表。当某个节点被排除后,该节点将不再参与集群的投票和领导选举。
主要用于处理有问题的节点,使其不影响集群的正常运行。
DELETE /_cluster/voting_config_exclusions #
清除集群投票配置排除列表。可以清除所有排除或等待被排除的节点从集群中移除后再清除。
API 的参数 #
POST /_cluster/voting_config_exclusions #
Query String 参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
node_ids | 字符串 | 是* | - | 逗号分隔的节点 ID 列表 |
node_names | 字符串 | 是* | - | 逗号分隔的节点名称列表 |
timeout | 时间值 | 否 | 30s | 操作超时时间 |
注意:
node_ids和node_names必须指定其中一个,但不能同时指定。
DELETE /_cluster/voting_config_exclusions #
Query String 参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
wait_for_removal | 布尔值 | 否 | true | 是否等待所有被排除的节点从集群中移除后再清除排除列表 |
timeout | 时间值 | 否 | 30s | 操作超时时间 |
限制和验证 #
| 限制 | 描述 |
|---|---|
| 最大排除数量 | 系统配置 cluster.max_voting_config_exclusions 控制最大允许的排除数量,默认为 10 |
| 互斥检查 | 不能同时指定 node_ids 和 node_names |
| 主节点限制 | 只有有主节点资格(master-eligible)的节点才能被添加到排除列表 |
示例 #
添加节点到排除列表(通过节点 ID) #
POST /_cluster/voting_config_exclusions?node_ids=node1,node2
响应示例:
{
"acknowledged": true
}
添加节点到排除列表(通过节点名称) #
POST /_cluster/voting_config_exclusions?node_names=node-1,node-2
设置超时时间 #
POST /_cluster/voting_config_exclusions?node_ids=node1&timeout=1m
清除排除列表(等待节点移除) #
DELETE /_cluster/voting_config_exclusions
清除排除列表(不等待节点移除) #
DELETE /_cluster/voting_config_exclusions?wait_for_removal=false
使用已弃用的路由(单个节点) #
POST /_cluster/voting_config_exclusions/node-1
注意:使用路径参数
/{node_name}的方式已被弃用,建议使用 query 参数node_ids或node_names。
使用场景 #
场景 1:移除故障节点 #
当某个节点出现故障但不希望它影响集群的投票和领导选举时:
# 1. 将故障节点添加到排除列表
POST /_cluster/voting_config_exclusions?node_names=faulty-node
# 2. 安全地关闭或移除故障节点
# 3. 清除排除列表
DELETE /_cluster/voting_config_exclusions
场景 2:集群维护 #
在进行集群维护前,将某些节点从投票配置中排除:
# 排除需要维护的节点
POST /_cluster/voting_config_exclusions?node_names=maintenance-node
# 执行维护操作
# 维护完成后清除排除
DELETE /_cluster/voting_config_exclusions?wait_for_removal=true
重要注意事项 #
向后兼容性:
POST /_cluster/voting_config_exclusions/{node_name}是已弃用的路由- 建议使用 query 参数
node_ids或node_names替代路径参数
安全性:
- 这些 API 需要集群元数据写入权限
- 在元数据全局阻塞时会拒绝请求
工作原理:
- POST 操作会将节点标记为排除,并等待节点从投票配置中移除
- DELETE 操作会清除排除列表,可以选择等待被排除的节点实际离开集群
节点标识:
- 使用
node_ids:通过节点 ID 标识节点 - 使用
node_names:通过节点名称标识节点
- 使用





