投票配置排除 API

编辑

投票配置排除列表中添加或删除符合主节点条件的节点。

请求

编辑

POST /_cluster/voting_config_exclusions?node_names=<node_names>

POST /_cluster/voting_config_exclusions?node_ids=<node_ids>

DELETE /_cluster/voting_config_exclusions

先决条件

编辑
  • 如果启用了 Elasticsearch 安全功能,则您必须拥有 manage 集群权限才能使用此 API。
  • 如果启用了操作员权限功能,则只有操作员用户才能使用此 API。

描述

编辑

默认情况下,如果集群中有三个以上符合主节点条件的节点,并且您一次删除的符合主节点条件的节点少于一半,则投票配置会自动缩小。

如果您希望将投票配置缩小到包含少于三个节点,或者一次删除集群中一半或更多的符合主节点条件的节点,请使用此 API 手动从投票配置中删除即将离开的节点。该 API 会将每个指定节点的条目添加到集群的投票配置排除列表中。然后,它会等待集群重新配置其投票配置以排除指定的节点。

在正常操作中,集群不应有任何投票配置排除项。一旦被排除的节点停止,请使用 DELETE /_cluster/voting_config_exclusions 清除投票配置排除项。此 API 会等待节点完全从集群中删除后才会返回。如果您的集群有不再打算删除的节点的投票配置排除项,请使用 DELETE /_cluster/voting_config_exclusions?wait_for_removal=false 清除投票配置排除项,而无需等待节点离开集群。

POST /_cluster/voting_config_exclusions 的响应,其 HTTP 状态代码为 200 OK,保证该节点已从投票配置中删除,并且在调用 DELETE /_cluster/voting_config_exclusions 清除投票配置排除项之前不会恢复。如果对 POST /_cluster/voting_config_exclusions 的调用失败或返回 HTTP 状态代码不是 200 OK 的响应,则该节点可能尚未从投票配置中删除。在这种情况下,您可以安全地重试调用。

仅当您在短时间内从集群中删除至少一半的符合主节点条件的节点时,才需要投票排除。删除不符合主节点条件的节点或删除少于一半的符合主节点条件的节点时,不需要投票排除。

有关更多信息,请参阅删除符合主节点条件的节点

查询参数

编辑
node_names
要从投票配置中排除的节点的名称的逗号分隔列表。如果指定,则您也不能指定 ?node_ids。仅适用于此 API 的 POST 形式。
node_ids
要从投票配置中排除的节点的持久 ID 的逗号分隔列表。如果指定,则您也不能指定 ?node_names。仅适用于此 API 的 POST 形式。
timeout
(可选,时间单位)添加投票配置排除项时,API 会等待指定节点从投票配置中排除后再返回。等待的时间段由 ?timeout 查询参数指定。如果超时在满足相应条件之前过期,则请求失败并返回错误。默认为 30 秒。仅适用于此 API 的 POST 形式。
master_timeout
(可选,时间单位)定义在尝试将请求路由到集群中当前主节点时要等待的时间。默认为 30 秒。适用于此 API 的 POSTDELETE 形式。
wait_for_removal
(可选,布尔值)指定在清除投票配置排除列表之前是否等待所有被排除的节点从集群中删除。默认为 true,这意味着所有被排除的节点必须从集群中删除,此 API 才会执行任何操作。如果设置为 false,则即使某些被排除的节点仍在集群中,也会清除投票配置排除列表。仅适用于此 API 的 DELETE 形式。

示例

编辑

将名为 nodeName1nodeName2 的节点添加到投票配置排除列表中

resp = client.cluster.post_voting_config_exclusions(
    node_names="nodeName1,nodeName2",
)
print(resp)
const response = await client.cluster.postVotingConfigExclusions({
  node_names: "nodeName1,nodeName2",
});
console.log(response);
POST /_cluster/voting_config_exclusions?node_names=nodeName1,nodeName2

从列表中删除所有排除项

resp = client.cluster.delete_voting_config_exclusions()
print(resp)
const response = await client.cluster.deleteVotingConfigExclusions();
console.log(response);
DELETE /_cluster/voting_config_exclusions