升级亚马逊 OpenSearch 服务域名 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

升级亚马逊 OpenSearch 服务域名

注意

OpenSearch 而且 Elasticsearch 版本升级不同于服务软件更新。有关更新服务域的服务软件的信息 OpenSearch ,请参阅Amazon OpenSearch Service 中的服务软件更新

亚马逊 OpenSearch 服务为运行 OpenSearch 1.0 或更高版本或 Elasticsearch 5.1 或更高版本的域名提供就地升级。如果您使用诸如 Amazon Kinesis Data Firehose CloudWatch 或 Amazon Logs 之类的服务将数据 OpenSearch 流式传输到服务,请在迁移之前检查这些服务是否支持 OpenSearch 较新版本的。

支持的升级途径

目前, OpenSearch 服务支持以下升级路径:

之前版本 目标版本
OpenSearch 1.3 或 2。 x

OpenSearch 2。 x

版本 2.3 具有以下重大更改:

  • 在 2.0 版本中,该type参数已从所有 OpenSearch API 端点中删除。有关更多信息,请参阅 breaking changes(重大更改)。

  • 如果您的域包含最初在 Elasticsearch 6.8 中创建的任何索引(热索引或冷索引),则这些索引与 2.3 不兼容。 UltraWarm OpenSearch

    在升级到版本 2.3 之前,必须为不兼容的索引重新编制索引。对于不兼容的索引 UltraWarm 或冷索引,请将其迁移到热存储,重新索引数据,然后将其迁移回温存储或冷存储。或者,如果您不再需要索引,可以删除它们。

    如果您意外将域升级到版本 2.3,而没有先执行这些步骤,则无法将不兼容的索引从其当前存储层迁移出去。您唯一的选择是删除它们。

OpenSearch 1。 x OpenSearch 1。 x
Elasticsearch 7.x

Elasticsearch 7 x 或 OpenSearch 1。 x

重要

OpenSearch 1。 x 引入了许多重大更改。有关更多信息,请参阅 Amazon OpenSearch Service 重命名:更改摘要

Elasticsearch 6.8

Elasticsearch 7 x 或 OpenSearch 1。 x

重要

Elasticsearch 7.0 和 OpenSearch 1.0 包含许多重大更改。在启动就地升级之前,我们建议您手动拍摄 6 的快照x 域,在测试中将其恢复 7. x 或 OpenSearch 1。 x 域,并使用该测试域来识别潜在的升级问题。有关 OpenSearch 1.0 中的重大更改,请参阅Amazon OpenSearch Service 重命名:更改摘要

与 Elasticsearch 6.x 相似,索引只能包含一种映射类型,但该类型现在必须名为 _doc。因此,特定 API 在请求正文中不再需要映射类型(例如 _bulk API)。

对于新索引,请使用自托管的 Elasticsearch 7。 x 和 OpenSearch 1。 x 的默认分片数为 1。 OpenSearch Elasticsearch 上的服务域 7. x 及更高版本保留之前的默认值 5。

Elasticsearch 6.x

Elasticsearch 6.x

Elasticsearch 5.6

Elasticsearch 6.x

重要

在版本 6.x 中创建的索引不再支持多个映射类型。在版本 5.x 中创建的索引在还原到 6.x 集群后仍然支持多个映射类型。请检查您的代码是否仅为每个索引创建一个映射类型。

尽量减少从 Elasticsearch 5.6 升级到 6 期间的停机时间。 x,S OpenSearch ervice 将索引重新索引到.kibana-6.kibana、删除、创建名为的别名.kibana,并将新索引映射到新别名。.kibana

Elasticsearch 5.x Elasticsearch 5.x

升级过程包括三个步骤:

  1. 升级前检查 — OpenSearch 服务会检查是否存在可能阻碍升级的问题,除非这些检查成功,否则不会继续执行下一步操作。

  2. 快照 — OpenSearch 服务会拍摄 OpenSearch 或 Elasticsearch 集群的快照,除非快照成功,否则不会继续执行下一步操作。如果升级失败, OpenSearch 服务将使用此快照将集群恢复到其原始状态。有关更多信息,请参阅 升级后无法降级

  3. 升级- OpenSearch 服务会启动升级,升级可能需要 15 分钟到几个小时才能完成。 OpenSearch 在部分或全部升级期间,仪表板可能不可用。

开始升级(控制台)

升级过程是不可撤消的,并且无法暂停或取消。在升级过程中,您无法对域进行配置更改。在开始升级之前,请仔细确认您是否要继续。您可以使用这些相同步骤执行升级前检查而不实际开始升级。

如果集群有专用的主节点,则 OpenSearch 升级无需停机即可完成。否则,集群在选择主节点时可能会在升级后几秒钟无响应。

将域名升级到更高版本 OpenSearch 或 Elasticsearch
  1. 创建您的域的手动快照。此快照用作备份,如果您想恢复使用先前 OpenSearch 版本,则可以在新域上恢复该快照。

  2. 转至 http://aws.amazon.com,然后选择登录到控制台

  3. 在 “分析” 下,选择 “亚马逊 OpenSearch 服务”。

  4. 在导航窗格中的 Domains(域)下,选择要升级的域。

  5. 选择 Actions(操作)Upgrade(升级)

  6. 选择要升级到的版本。如果您要升级到某个 OpenSearch 版本,则会出现 “启用兼容模式” 选项。如果您启用此设置,则将其版本 OpenSearch 报告为 7.10,以允许 Elasticsearch OSS 客户端和 Logstash 等插件继续使用亚马逊服务。 OpenSearch 可以稍后禁用此设置

  7. 选择 Upgrade

  8. 检查域控制面板上的 Status(状态)以监控升级的状态。

开始升级(CLI)

您可以使用以下操作为您的域识别 OpenSearch 或 Elasticsearch 的正确版本、开始就地升级、执行升级前检查并查看进度:

  • get-compatible-versions (GetCompatibleVersions)

  • upgrade-domain (UpgradeDomain)

  • get-upgrade-status (GetUpgradeStatus)

  • get-upgrade-history (GetUpgradeHistory)

有关更多信息,请参阅 AmazonCLI 命令参考亚马逊 OpenSearch 服务 API 参考

开始升级(SDK)

此示例使用中的OpenSearchService低级 Python 客户端Amazon SDK for Python (Boto)来检查域是否有资格升级到特定版本,对其进行升级,并持续检查升级状态。

import boto3 from botocore.config import Config import time # Build the client using the default credential configuration. # You can use the CLI and run 'aws configure' to set access key, secret # key, and default Region. DOMAIN_NAME = '' # The name of the domain to upgrade TARGET_VERSION = '' # The version you want to upgrade the domain to. For example, OpenSearch_1.1 my_config = Config( # Optionally lets you specify a Region other than your default. region_name='us-east-1' ) client = boto3.client('opensearch', config=my_config) def check_versions(): """Determine whether domain is eligible for upgrade""" response = client.get_compatible_versions( DomainName=DOMAIN_NAME ) compatible_versions = response['CompatibleVersions'] for i in range(len(compatible_versions)): if TARGET_VERSION in compatible_versions[i]["TargetVersions"]: print('Domain is eligible for upgrade to ' + TARGET_VERSION) upgrade_domain() print(response) else: print('Domain not eligible for upgrade to ' + TARGET_VERSION) def upgrade_domain(): """Upgrades the domain""" response = client.upgrade_domain( DomainName=DOMAIN_NAME, TargetVersion=TARGET_VERSION ) print('Upgrading domain to ' + TARGET_VERSION + '...' + response) time.sleep(5) wait_for_upgrade() def wait_for_upgrade(): """Get the status of the upgrade""" response = client.get_upgrade_status( DomainName=DOMAIN_NAME ) if (response['UpgradeStep']) == 'UPGRADE' and (response['StepStatus']) == 'SUCCEEDED': print('Domain successfully upgraded to ' + TARGET_VERSION) elif (response['StepStatus']) == 'FAILED': print('Upgrade failed. Please try again.') elif (response['StepStatus']) == 'SUCCEEDED_WITH_ISSUES': print('Upgrade succeeded with issues') elif (response['StepStatus']) == 'IN_PROGRESS': time.sleep(30) wait_for_upgrade() def main(): check_versions() if __name__ == "__main__": main()

对验证失败进行故障排除

当您启动 OpenSearch 或 Elasticsearch 版本升级时, OpenSearch 服务会首先执行一系列验证检查,以确保您的域名符合升级条件。如果其中任何一项检查失败,您将收到通知,其中包含在升级域之前必须修复的特定问题。有关潜在问题及其解决步骤的列表,请参阅 对验证错误进行故障排除

排查升级问题

就地 升级需要正常运行的域。您的域可能不符合升级条件或出于各种原因无法升级。下表显示了最常见的问题。

问题 描述
不支持可选插件

当您使用可选插件升级域名时,S OpenSearch ervice 也会自动升级插件。因此,您的域的目标版本还必须支持这些可选插件。如果域安装了目标版本不可用的可选插件,则升级请求将失败。

一个节点的分片过多 OpenSearch,以及 7。 x 个版本的 Elasticsearch,其默认设置为每个节点不超过 1,000 个分片。如果您当前集群中的某个节点超过此设置,则 OpenSearch 服务将不允许您升级。有关问题排查选项,请参阅超过最大分片限制
域正在处理中 域正在接受配置更改。在操作完成后检查升级资格。
红色集群状态 集群中的一个或多个索引为红色。有关问题排查步骤,请参阅红色集群状态
高错误率 在尝试处理请求时,集群返回大量 5xx 错误。此问题通常是因为同时读取或写入了过多的请求。请考虑减少流向集群的流量或扩展您的域。
裂脑 脑裂意味着您的集群有多个主节点并且已拆分成两个绝不会自行重新联接的集群。您可以通过使用推荐数量的专用主节点避免裂脑。为了帮助您从裂脑恢复,请联系 Amazon Web Services Support
找不到主节点 OpenSearch 服务找不到集群的主节点。如果您的域使用了多 AZ,一个可用区故障可能已导致集群失去仲裁节点数且无法选择新的主节点。如果该问题无法自行解决,请联系 Amazon Web Services Support
待处理任务过多 主节点处于高负载状态,且具有很多待处理任务。请考虑减少流向集群的流量或扩展您的域。
存储卷受损 一个或多个节点的磁盘卷无法正常运行。此问题通常与其他问题一起发生,例如高错误率或待处理任务过多。如果它是独立发生的且无法自行解决,请联系 Amazon Web Services Support
KMS 密钥问题 用于加密域的 KMS 密钥无法访问或丢失。有关更多信息,请参阅 监控对静态数据进行加密的域
快照拍摄正在进行中 域当前正在拍摄快照。在快照拍摄完成后检查升级资格。还要检查您是否可以列出手动快照存储库,在这些存储库中列出快照,并拍摄手动快照。如果 OpenSearch 服务无法检查快照是否正在进行中,则升级可能会失败。
快照拍摄超时或失败 升级前快照拍摄所需的时间过长或失败。检查集群运行状况并重试。如果问题仍存在,请联系 Amazon Web Services Support
索引不兼容 一个或多个索引与目标版本不兼容。如果您从旧版本 OpenSearch 或 Elasticsearch 迁移索引,则可能会出现此问题。重建索引并重试。
高磁盘使用率 集群的磁盘使用率高于 90%。删除数据或扩展域,然后重试。
高 JVM 使用率 JVM 内存压力高于 75%。减少流向集群的流量或扩展域,然后重试。
OpenSearch 仪表板别名问题 .dashboards已配置为别名并映射到不兼容的索引,可能来自早期版本的 Dashboard OpenSearch s。重新编制索引并重试。
红色控制面板状态 OpenSearch 仪表板状态为红色。尝试在升级完成时使用控制面板。如果红色状态仍然存在,请手动解决该问题,然后重试。
跨集群兼容性

仅当升级之后源域与目标域之间保持跨集群兼容性时,才能升级。在升级过程中,会识别任何不兼容的连接。要继续,请删除远程域或删除不兼容的连接。请注意,如果域上的复制处于活动状态,则在删除连接后无法恢复复制。

其他 OpenSearch 服务服务问题 OpenSearch 服务本身的问题可能会导致您的域名显示为不符合升级资格。如果上述情况都不适用于您的域且该问题持续超过一天,请联系 Amazon Web Services Support

使用快照迁移数据

就地升级是将域名升级到更高版本 OpenSearch 或 Elasticsearch 版本的更简单、更快速、更可靠的方法。如果您需要从 5.1 之前的 Elasticsearch 版本迁移或想要迁移到全新的集群,那么快照是一个很好的选择。

下表显示了如何使用快照将数据迁移到使用不同版本 OpenSearch 或 Elasticsearch 版本的域中。有关制作和还原快照的更多信息,请参阅在亚马逊 OpenSearch 服务中创建索引快照

之前版本 目标版本 迁移过程
OpenSearch 1.3 或 2。 x OpenSearch 2。 x
  1. 查看 OpenSearch 2.3 版的重大更改,看看是否需要调整索引或应用程序。

  2. 创建 1.3 or 2.x 域的手动快照。

  3. 创建 2.x 域,其版本高于原来的 1.3 或 2.x 域。

  4. 将快照从原始域还原到 2.x 域。在操作期间,您可能需要在新名称下还原 .opensearch 索引:

    POST _snapshot/<repository-name>/<snapshot-name>/_restore { "indices": "*", "ignore_unavailable": true, "rename_pattern": ".opensearch", "rename_replacement": ".backup-opensearch" }

    然后,您可以在新域上为 .backup-opensearch 重新建立索引,并为其分配别名 .opensearch。请注意,_restoreREST 调用不包括 include_global_state,因为 _restore 中的默认值为 false。因此,测试域将不包含任何索引模板,也不会获得备份的完整状态。

  5. 如果您不再需要您的原始域,请将其删除。否则,您仍需为该域付费。

OpenSearch 1。 x OpenSearch 1。 x
  1. 创建 1.x 域的手动快照。

  2. 创建 1.x 域,其版本要高于原来的 1.x 域。

  3. 将快照从原始域还原到新的 1.x 域。在操作期间,您可能需要在新名称下还原 .opensearch 索引:

    POST _snapshot/<repository-name>/<snapshot-name>/_restore { "indices": "*", "ignore_unavailable": true, "rename_pattern": ".opensearch", "rename_replacement": ".backup-opensearch" }

    然后,您可以在新域上为 .backup-opensearch 重新建立索引,并为其分配别名 .opensearch。请注意,_restoreREST 调用不包括 include_global_state,因为 _restore 中的默认值为 false。因此,测试域将不包含任何索引模板,也不会获得备份的完整状态。

  4. 如果您不再需要您的原始域,请将其删除。否则,您仍需为该域付费。

Elasticsearch 6.x 或 7.x OpenSearch 1。 x
  1. 查看 OpenSearch 1.0 的重大更改,看看是否需要调整索引或应用程序。

  2. 创建 Elasticsearch 7.x 或 6.x域的手动快照。

  3. 创建一个 OpenSearch 1. x 域名。

  4. 将快照从 Elasticsearch 域恢复到该 OpenSearch 域。在操作期间,您可能需要在新名称下还原 .elasticsearch 索引:

    POST _snapshot/<repository-name>/<snapshot-name>/_restore { "indices": "*", "ignore_unavailable": true, "rename_pattern": ".elasticsearch", "rename_replacement": ".backup-opensearch" }

    然后,您可以在新域上为 .backup-opensearch 重新建立索引,并为其分配别名 .elasticsearch。请注意,_restoreREST 调用不包括 include_global_state,因为 _restore 中的默认值为 false。因此,测试域将不包含任何索引模板,也不会获得备份的完整状态。

  5. 如果您不再需要您的原始域,请将其删除。否则,您仍需为该域付费。

Elasticsearch 6.x Elasticsearch 7.x
  1. 请查看 7.0 的重大更改,了解是否需要对索引或应用程序做出调整。

  2. 创建 6.x 域的手动快照。

  3. 创建 7.x 域。

  4. 将快照从原始域还原到 7.x 域。在操作期间,您可能需要在新名称下还原 .opensearch 索引:

    POST _snapshot/<repository-name>/<snapshot-name>/_restore { "indices": "*", "ignore_unavailable": true, "rename_pattern": ".elasticsearch", "rename_replacement": ".backup-elasticsearch" }

    然后,您可以在新域上为 .backup-elasticsearch 重新建立索引,并为其分配别名 .elasticsearch。请注意,_restoreREST 调用不包括 include_global_state,因为 _restore 中的默认值为 false。因此,测试域将不包含任何索引模板,也不会获得备份的完整状态。

  5. 如果您不再需要您的原始域,请将其删除。否则,您仍需为该域付费。

Elasticsearch 6.x Elasticsearch 6.8
  1. 创建 6.x 域的手动快照。

  2. 创建 6.8 域。

  3. 将快照从原始域还原到 6.8 域。

  4. 如果您不再需要您的原始域,请将其删除。否则,您仍需为该域付费。

Elasticsearch 5.x Elasticsearch 6.x
  1. 请查看 6.0 的重大更改,了解是否需要对索引或应用程序做出调整。

  2. 创建 5.x 域的手动快照。

  3. 创建 6.x 域。

  4. 将快照从原始域还原到 6.x 域。

  5. 如果您不再需要 5.x 域,请将其删除。否则,您仍需为该域付费。

Elasticsearch 5.x Elasticsearch 5.6
  1. 创建 5.x 域的手动快照。

  2. 创建 5.6 域。

  3. 将快照从原始域还原到 5.6 域。

  4. 如果您不再需要您的原始域,请将其删除。否则,您仍需为该域付费。

Elasticsearch 2.3 Elasticsearch 6.x

Elasticsearch 2.3 快照与 6.x 不兼容。要将您的数据直接从 2.3 迁移到 6.x,则必须在新域中手动重新创建您的索引。

或者,您也可以执行本表中从 2.3 迁移到 5.x 的步骤,在新的 5.x 域中执行 _reindex 操作以将 2.3 索引转换为 5.x 索引,然后执行从 5.x 迁移到 6.x 的步骤。

Elasticsearch 2.3 Elasticsearch 5.x
  1. 请查看 5.0 的重大更改,了解是否需要对索引或应用程序做出调整。

  2. 创建 2.3 域的手动快照。

  3. 创建 5.x 域。

  4. 将快照从 2.3 域还原到 5.x 域。

  5. 如果您不再需要 2.3 域,请将其删除。否则,您仍需为该域付费。

Elasticsearch Elasticsearch 5.x

1.5 快照与 5.x 不兼容。要将您的数据从 1.5 迁移到 5.x,则必须在新域中手动重新创建您的索引。

重要

1.5 快照 2.3 兼容,但 OpenSearch 服务 2.3 域不支持该_reindex操作。由于您无法为它们重新编制索引,因此 1.5 域中发出的索引仍无法从 2.3 快照还原到 5.x 域。

Elasticsearch Elasticsearch 2.3
  1. 使用迁移插件了解是否可以直接升级到 2.3 版。您可能需要在迁移前对数据进行更改。

    1. 在 Web 浏览器中,打开 http://domain-endpoint/_plugin/migration/

    2. 选择立即运行检查

    3. 检查结果,如果需要,按照说明更改您的数据。

  2. 创建 1.5 域的手动快照。

  3. 创建 2.3 域。

  4. 将快照从 1.5 域还原到 2.3 域。

  5. 如果您不再需要 1.5 域,请将其删除。否则,您仍需为该域付费。