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

管理集群投票配置排除列表,用于添加或清除被排除的节点,使其不再参与集群的投票和领导选举。

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_idsnode_names 必须指定其中一个,但不能同时指定。

DELETE /_cluster/voting_config_exclusions #

Query String 参数 #

参数类型是否必填默认值描述
wait_for_removal布尔值true是否等待所有被排除的节点从集群中移除后再清除排除列表
timeout时间值30s操作超时时间

限制和验证 #

限制描述
最大排除数量系统配置 cluster.max_voting_config_exclusions 控制最大允许的排除数量,默认为 10
互斥检查不能同时指定 node_idsnode_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_idsnode_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

重要注意事项 #

  1. 向后兼容性

    • POST /_cluster/voting_config_exclusions/{node_name} 是已弃用的路由
    • 建议使用 query 参数 node_idsnode_names 替代路径参数
  2. 安全性

    • 这些 API 需要集群元数据写入权限
    • 在元数据全局阻塞时会拒绝请求
  3. 工作原理

    • POST 操作会将节点标记为排除,并等待节点从投票配置中移除
    • DELETE 操作会清除排除列表,可以选择等待被排除的节点实际离开集群
  4. 节点标识

    • 使用 node_ids:通过节点 ID 标识节点
    • 使用 node_names:通过节点名称标识节点