预先验证节点移除 API
编辑预先验证节点移除 API编辑
此功能专为 Elasticsearch 服务、Elastic Cloud Enterprise 和 Elastic Cloud on Kubernetes 的间接使用而设计。不支持直接使用。
预先验证节点移除。
请求编辑
POST /_internal/prevalidate_node_removal
描述编辑
此 API 检查尝试从集群中移除指定节点是否可能成功。对于没有未分配分片的集群,移除任何节点都被认为是安全的,这意味着移除节点很可能成功。
如果集群具有 red
集群健康状态,它将验证移除节点不会冒移除未分配分片的最后一个剩余副本的风险。如果集群中存在红色索引,则 API 会检查红色索引是否为 可搜索快照 索引,如果不是,则会向 API 调用中指定的每个节点发送请求,以验证节点是否可能包含红色索引的本地分片副本,这些副本不是可搜索快照索引。此请求在每个接收节点上进行处理,方法是检查节点是否具有任何红色索引分片的 shard 目录。
响应包括移除指定节点的整体安全性,以及每个节点的详细响应。响应的特定于节点的部分还包括有关为什么移除该节点可能不成功的更多详细信息。
请注意,必须使用查询参数之一(names
、ids
或 external_ids
)来指定节点集。
请注意,如果一组节点的预验证结果返回 true
(即很可能成功),这并不意味着所有这些节点都可以一次成功移除,而是每个单独节点的移除都可能成功。实际的节点移除可以通过 节点生命周期 API 处理。
查询参数编辑
响应主体编辑
-
is_safe
- (布尔值) 是否安全移除所有提供的节点。
-
message
- (字符串) 提供有关操作为何被认为安全或不安全的更多详细信息的消息。
-
nodes
-
(对象) 移除每个提供的节点的预验证结果。
nodes
的属性-
<node>
-
(对象) 包含有关特定节点的移除预验证的信息。
<node>
的属性-
id
- (字符串) 节点 ID
-
name
- (字符串) 节点名称
-
external_id
- (字符串) 节点外部 ID
-
result
-
(对象) 包含节点的移除预验证结果。
result
的属性-
is_safe
- (布尔值) 是否安全移除节点。
-
reason
-
(字符串) 指定预验证结果为何被认为安全或不安全的字符串。它可以是以下值之一
-
no_problems
: 预验证没有发现任何可能阻止安全移除节点的问题。 -
no_red_shards_except_searchable_snapshots
: 节点可以安全移除,因为所有红色索引都是可搜索快照索引,因此移除节点不会冒移除该索引从集群中的最后一个副本的风险。 -
no_red_shards_on_node
: 节点不包含任何红色非可搜索快照索引分片的副本。 -
red_shards_on_node
: 节点可能包含一些非可搜索快照红色索引的分片副本。message
字段中指定了可能在节点上的分片列表。 -
unable_to_verify_red_shards
: 联系节点失败或超时。message
字段中提供了更多详细信息。
-
-
message
- (可选,字符串) 有关移除预验证结果的详细信息。
-
-
-
示例编辑
此示例验证移除节点 node1
和 node2
是否安全。响应表明安全移除 node1
,但可能不安全移除 node2
,因为它可能包含指定红色分片的副本。因此,移除这两个节点的整体预验证返回 false
。
POST /_internal/prevalidate_node_removal?names=node1,node2
API 返回以下响应
{ "is_safe": false, "message": "removal of the following nodes might not be safe: [node2-id]", "nodes": [ { "id": "node1-id", "name" : "node1", "external_id" : "node1-externalId", "result" : { "is_safe": true, "reason": "no_red_shards_on_node", "message": "" } }, { "id": "node2-id", "name" : "node2", "external_id" : "node2-externalId", "result" : { "is_safe": false, "reason": "red_shards_on_node", "message": "node contains copies of the following red shards: [[indexName][0]]" } } ] }