放置关闭 API编辑

此功能旨在供 Elasticsearch ServiceElastic Cloud EnterpriseElastic Cloud on Kubernetes 间接使用。不支持直接使用。

准备关闭节点。

请求编辑

PUT _nodes/<node-id>/shutdown

先决条件编辑

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

描述编辑

根据需要将正在进行的任务和索引分片迁移到其他节点,以准备重新启动节点或关闭节点并将其从集群中移除。这可确保 Elasticsearch 可以安全停止,并最大程度地减少对集群的干扰。

您必须指定关闭类型:restartremovereplace。如果节点已准备好关闭,则可以使用此 API 更改关闭类型。

此 API **不会** 终止 Elasticsearch 进程。监控 节点关闭状态 以确定何时可以安全停止 Elasticsearch。

路径参数编辑

<node-id>
(必填,字符串)要准备关闭的节点的 ID。如果指定一个处于脱机状态的节点,则当它重新加入集群时,它将准备好关闭。

此参数 **不会** 根据集群的活动节点进行验证。这使您能够在节点脱机时注册要关闭的节点。如果指定无效的节点 ID,则不会引发错误。

查询参数编辑

master_timeout
(可选,时间单位)等待主节点的时间段。如果在超时到期之前主节点不可用,则请求失败并返回错误。默认为 30s。也可以设置为 -1 以指示请求永不超时。
timeout
(可选,时间单位)等待响应的时间段。如果在超时到期之前未收到响应,则请求失败并返回错误。默认为 30s

请求正文编辑

type
(必填,字符串)有效值为 restartremovereplace。当您需要临时关闭节点以执行升级、进行配置更改或执行其他维护时,请使用 restart。由于预计节点将重新加入集群,因此不会将数据从节点中迁移出去。当您需要从集群中永久移除节点时,请使用 remove。在将数据从节点中迁移出去之前,不会将节点标记为已准备好关闭。使用 replace 将节点 1:1 替换为另一个节点。为了将源节点真正替换为目标节点,将忽略某些分配决策(例如磁盘水印)。在替换类型关闭期间,滚动更新和索引创建可能会导致未分配的分片,并且在替换完成之前,收缩可能会失败。
reason
(必填,字符串)节点关闭的可读原因。此字段为其他集群操作员提供信息;它不会影响关闭过程。
allocation_delay
(可选,字符串)仅当 typerestart 时有效。控制 Elasticsearch 在将节点的分片重新分配给其他节点之前等待节点重新启动并加入集群的时间。这与使用 index.unassigned.node_left.delayed_timeout 设置 延迟分配 的工作原理相同。如果同时指定了重新启动分配延迟和索引级别分配延迟,则使用两者中较长的时间。
target_node_name
(可选,字符串)仅当 typereplace 时有效。指定正在替换要关闭的节点的节点的名称。来自关闭节点的分片只允许分配给目标节点,并且不会将其他数据分配给目标节点。在重新定位数据期间,将忽略某些分配规则,例如磁盘水印或用户属性过滤规则。

示例编辑

注册要关闭的节点

response = client.shutdown.put_node(
  node_id: 'USpTGYaBSIKbgSUJR2Z9lg',
  body: {
    type: 'restart',
    reason: 'Demonstrating how the node shutdown API works',
    allocation_delay: '20m'
  }
)
puts response
PUT /_nodes/USpTGYaBSIKbgSUJR2Z9lg/shutdown
{
  "type": "restart", 
  "reason": "Demonstrating how the node shutdown API works",
  "allocation_delay": "20m"
}

准备重新启动节点。对于将从集群中永久移除的节点,请使用 remove