为什么我的 Amazon OpenSearch Service 域升级需要这么长时间?

上次更新日期:2021 年 7 月 30 日

我正在尝试升级我的 Amazon OpenSearch Service(Amazon Elasticsearch Service 的后继者)集群,但升级需要很长时间。为什么会发生这种情况?如何在 OpenSearch Service 中更好地监控我的集群升级状态?

简短描述

当您在 OpenSearch Service 中进行配置更改时,将使用蓝/绿部署流程。在蓝/绿部署中,运行两个生产环境(一个处于活动状态,另一个处于空闲状态)。然后,这两个生产环境根据软件更新切换。对于 OpenSearch Service,将在域更新期间创建一个新环境,并在更新完成后将用户路由到新生产环境。这种行为可以最大限度地减少停机时间,并在部署失败的情况下维护原始环境。

为了更好地监控 OpenSearch Service 中的集群升级状态,请在每个阶段监控蓝/绿部署流程:

  • 新节点创建
  • 数据迁移
  • 旧节点删除

解决方法

检索所有集群快照和节点 ID

迁移之前,OpenSearch Service 会在您的集群通过资格测试时自动创建快照。在创建快照期间,进度状态可能会显示“null”或 0%。创建快照之后,百分比值将会更新。完成快照创建所需的时间可能因存储空间而异。由于快照以增量方式创建,如果您的数据与之前的自动快照之间有重大变化,则快照可能需要更长的时间才能完成。

以下 _snapshot 请求可检索当前正在运行的所有快照以及详细的状态信息:

GET /_snapshot/_status

有关快照 API 的更多信息,请参阅 Elasticsearch 网站上的监控快照和恢复进度

要检索集群中当前正在运行的所有快照,请使用 current 参数:

GET /_snapshot/<snapshot-repository>/_current

要获取所有数据节点的 ID,请使用 cat nodes(cat 节点)API:

GET _cat/nodes

您可以使用节点 ID 来确定哪些节点是旧节点,哪些节点是新节点。新节点上的分片数量越来越多则表明迁移顺利。最终,所有分片都将移动到新节点,旧节点将变为空节点。

监测蓝/绿部署流程

当您的集群进入蓝/绿部署流程时,新节点将会出现(在绿色环境中)。然后,将从旧节点(在蓝色环境中)迁移分片。数据迁移或分片重新分配完成后,您的旧集群将被拆除。

您可以在三个阶段监控蓝/绿部署流程:新节点、数据迁移和旧节点删除。

第 1 阶段:新节点创建

您可以在 Amazon CloudWatch 中监控 Nodes(节点)集群指标以获取节点计数。或者,您可以使用 cat nodes(cat 节点)API 列出集群中的所有节点:

GET /_cat/nodes?v&pretty

因为您只更新集群版本,因此一旦节点计数(旧节点和新节点)增加,该流程即完成。然后,您可能会看到您的 OpenSearch Service 域恢复为“活动”状态(进入“正在处理”状态后)。对于具有专用节点的集群,您可以看到节点计数增加到新旧节点数量之和。旧配置的领导节点将关闭,节点计数将减去领导节点的数量。例如,具有三个专用领导节点的 OpenSearch Service 集群将减少三个节点。

第 2 阶段:数据迁移

第一阶段完成,分片迁移就立即开始。在数据迁移期间,旧节点的分片计数减少,新节点的分片计数增加。您可以使用 cat 分配 API 查看为每个节点分配了多少个分片:

GET /_cat/allocation?v&pretty

有关更多信息,请参阅 Elasticsearch 网站上的 cat 分配

第 3 阶段:旧节点删除

在将所有分片迁移到新节点之后,旧节点将从集群中删除。然后,节点计数将恢复为您配置的原始节点计数。在此阶段,蓝/绿部署和更新流程完成。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?