Amazon Elasticsearch Service
开发人员指南 (API 版本 2015-01-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

升级 Elasticsearch

注意

Elasticsearch 版本升级不同于服务软件更新。有关为您的 Amazon ES 域更新服务软件的信息,请参阅管理 Amazon Elasticsearch Service 域

Amazon ES 为运行版本 5.1 及更高版本的域提供了就地 Elasticsearch 升级。如果您使用 Amazon Kinesis Data Firehose 或 Amazon CloudWatch Logs 等服务将数据流式传输至 Amazon ES,请在迁移前检查这些服务是否支持较新版本的 Elasticsearch。

当前,Amazon ES 支持以下升级路径。

源版本 目标版本
6.8

7.1

重要

Elasticsearch 7.x 包括多个重大更改。启动就地升级之前,我们建议制作 6.8 域的手动快照并在测试 7.1 域中还原,然后使用该测试域来识别潜在的升级问题。

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

对于新索引,自托管的 Elasticsearch 7.x 具有默认分片计数 1。Amazon ES 7.x 域保留之前的默认值 5。

6.x

6.x

5.6

6.x

重要

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

为了在从 Elasticsearch 5.6 到 6.x 的升级过程中最大程度地减少停机时间,Amazon ES 将 .kibana 索引重建为 .kibana-6,删除了 .kibana,创建了一个名为 .kibana 的别名,并将新索引映射到新别名。

5.x 5.6

升级过程包括三个步骤:

  1. 升级前检查 – Amazon ES 对可能阻碍升级的问题执行一系列检查,除非这些检查成功,否则不会继续下一步。

  2. 快照 – Amazon ES 拍摄 Elasticsearch 集群的快照,除非快照拍摄成功,否则不会继续下一步。如果升级失败,Amazon ES 将使用此快照将集群还原到其原始状态。有关此快照的更多信息,请参阅 升级后无法降级

  3. 升级 – Amazon ES 开始升级,这可能需要 15 分钟到几个小时才能完成。Kibana 可能在部分或全部升级中不可用。

排查升级问题

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

问题 描述
一个节点的分片过多 Elasticsearch 的 7.x 版本具有每个节点不超过 1000 个分片的默认设置。如果您当前集群中的节点超过了此设置,Amazon ES 不允许您升级。如果您遇到此错误,则有多个选项:
  • 将更多数据节点添加到集群。

  • 增加 _cluster/settings/cluster.max_shards_per_node 设置。

  • 使用 _shrink API 来减少节点上的分片数。

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

开始升级

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

将域升级到更高版本的 Elasticsearch(控制台)

  1. 创建您的域的手动快照。此快照可作为备份,如果您想恢复使用之前的 Elasticsearch 版本,可以在新域的基础上进行还原

  2. 转至 https://aws.amazon.com,然后选择 Sign In to the Console (登录控制台)

  3. Analytics 下,选择 Elasticsearch Service

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

  5. 选择升级域

  6. 对于操作,依次选择升级提交继续

  7. 返回到概览选项卡,然后选择升级状态以监控升级的状态。

将域升级到更高版本的 Elasticsearch(AWS CLI 和开发工具包)

您可以通过以下操作来识别您的域的正确 Elasticsearch 版本,开始就地升级,执行升级前检查,然后查看进度:

  • get-compatible-elasticsearch-versions (GetCompatibleElasticsearchVersions)

  • upgrade-elasticsearch-domain (UpgradeElasticsearchDomain)

  • get-upgrade-status (GetUpgradeStatus)

  • get-upgrade-history (GetUpgradeHistory)

有关更多信息,请参阅 AWS CLI Command ReferenceAmazon Elasticsearch Service 配置 API 参考

使用快照迁移数据

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

下表显示了如何使用快照将数据迁移到使用不同的 Elasticsearch 版本的域。有关制作和还原快照的更多信息,请参阅使用 Amazon Elasticsearch Service 索引快照

源版本 目标版本 迁移过程
6.x 7.1
  1. 请查看 7.0 的重大更改,了解是否需要对索引或应用程序做出调整。有关其他注意事项,请参阅升级 Elasticsearch 中的表。

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

  3. 创建 7.1 域。

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

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

    然后,您可以在新域上为 .backup-kibana 重新建立索引,并为其分配别名 .kibana

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

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

  2. 创建 6.8 域。

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

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

5.x 6.x
  1. 请查看 6.0 的重大更改,了解是否需要对索引或应用程序做出调整。有关其他注意事项,请参阅升级 Elasticsearch 中的表。

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

  3. 创建 6.x 域。

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

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

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

  2. 创建 5.6 域。

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

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

2.3 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 步骤。

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

    注意

    Elasticsearch 迁移插件当前不可用。

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

  3. 创建 5.x 域。

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

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

1.5 5.x

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

重要

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

1.5 2.3
  1. 使用 _plugin/migration Elasticsearch 插件了解您是否可以直接升级到 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 域,请将其删除。否则,您仍需为该域付费。