投票配置排除 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 清除投票配置排除项,而无需等待节点离开集群。

使用 HTTP 状态代码为 200 OKPOST /_cluster/voting_config_exclusions 返回的响应保证该节点已从投票配置中移除,并且在通过调用 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 查询参数指定。如果在满足相应条件之前超时过期,则请求失败并返回错误。默认为 30s。仅适用于此 API 的 POST 形式。
master_timeout
(可选,时间单位)定义尝试将请求路由到集群中当前主节点时要等待的时间长度。默认为 30s。适用于此 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