为什么我的 OpenSearch Service 域升级花了这么长时间?

2 分钟阅读
0

我正在尝试升级我的 Amazon OpenSearch Service 域,但升级花了很长时间。

简短描述

当您升级 OpenSearch Service 域版本时,会进行配置更改以激活蓝绿部署过程。在蓝绿部署中,系统会运行两个生产环境。一个环境处于活动状态,另一个环境处于空闲状态。然后根据软件更新切换两个生产环境。对于 OpenSearch Service,将在域更新期间创建一个新环境,更新完成后,用户将被路由到新的生产环境。这种行为最大限度地减少了停机时间,并在部署失败的情况下保持了原始环境。

OpenSearch Service 升级过程包括升级前问题检查和集群快照,以便在升级失败时恢复集群。

OpenSearch Service 升级可能会出现以下问题:

  • 升级前检查失败
  • 升级过程需要很长时间才能完成
  • 升级成功,但出现问题

有关详细信息,请参阅升级 Amazon OpenSearch Service 域

解决方法

升级前检查

升级过程不可逆转。您无法暂停或取消。升级过程中,您不能对域进行配置更改。在开始升级之前,最佳做法是仔细检查资格。您的域可能没有资格升级,或者无法升级。

要检查是否存在最常见的升级问题,请参阅升级故障排除

检查快照状态

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

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

GET /_snapshot/_status

有关快照 API 的详细信息,请参阅 Elasticsearch 网站上的监控快照

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

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

GET /_snapshot/<snapshot-repository>/_current

要获取所有数据节点的 ID,请运行 cat 节点 API:

GET _cat/nodes

您可以使用节点 ID 来识别旧节点或新节点。新节点上的分片数量增加表示迁移进展顺利。最终,所有分片都移动到新节点,旧节点变为空。

监控蓝绿部署过程

当您的集群进入蓝绿部署过程时,绿色环境中的新节点就会出现。然后,将从蓝色环境中的旧节点迁移分片。在数据迁移或分片重新分配完成后,您的旧节点将终止。

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

第 1 阶段: 创建新节点

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

GET /_cat/nodes?v&pretty

在蓝绿部署过程的这个阶段,随着节点数量增加,您可以从 API 输出查看新节点。

第 2 阶段: 数据迁移

第一阶段完成后,分片迁移立即开始。在数据迁移期间,旧节点的分片数量减少,而新节点的分片数量增加。您可以使用 cat/allocation API(来自 OpenSearch 网站)来获取分配给每个节点的分片数量:

GET /_cat/allocation

要获取分片的状态,即已启动正在重定位未分配,请运行下列 API:

GET _cat/shards?h=index,shard,prirep,state,relocating.reason

要检查集群中分片的恢复状态(来自 Elasticsearch 网站),请运行下列 API:

GET _cat/recovery?active_only=true

在此阶段,由于集群过载、分片不平衡或后端问题,数据迁移可能需要更多时间才能完成。

集群过载

确保在集群流量不高时升级版本。开始升级之前,请检查 CPUUtilizationJVMMemoryPressure 集群指标,确保这些指标具有最佳值。

有关详细信息,请参阅如何解决 Amazon OpenSearch Service 集群上的 CPU 利用率过高问题?

不平衡的分片

默认情况下,OpenSearch Service 的分片策略为 5:1,其中每个索引分为五个主分片。设置您的分片策略大小,使每个分片在 10—30 GiB 之间(针对搜索工作负载)或在 30—50 GiB 之间(针对日志工作负载)。

OpenSearch 和 Elasticsearch 7.x 及更高版本的每个节点限制为 1,000 个分片。最佳做法是每 GiB Java 堆的分片不超过 25 个。

有关详细信息,请参阅如果我的 Amazon OpenSearch Service 集群中的分片分配不均匀,如何重新平衡?

后端问题

在此阶段,分片迁移可能会因后端问题而停滞。如果迁移没有进展,并且问题无法自行解决,请联系 AWS Support

第 3 阶段: 删除旧节点

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

升级成功,但出现问题

当集群阻止传入写入请求时,会出现“升级成功,但出现问题”消息。查看 OpenSearch Service ClusterIndexWritesBlocked 指标。值为 1 表示集群正在阻止写入请求。如需解决此问题,请添加更多磁盘空间或者扩展您的集群。

有关详细信息,请参阅 Amazon OpenSearch Service 的操作最佳实践

AWS 官方
AWS 官方已更新 10 个月前