Amazon 服务中的 OpenSearch 服务软件更新 - 亚马逊 OpenSearch 服务

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

Amazon 服务中的 OpenSearch 服务软件更新

注意

有关每个主要(非补丁)服务软件更新中所做的更改和新增功能说明,请参阅发布说明

Amazon S OpenSearch ervice 会定期发布服务软件更新,以增加功能或以其他方式改进您的域名。控制台中的 Notifications(通知)面板是查看是否有可用的更新或检查更新状态的最简单方法。每个通知都包含有关服务软件更新的详细信息。所有服务软件更新均使用蓝绿部署,以尽可能减少停机时间。

服务软件更新不同于 OpenSearch 版本升级。有关升级到更高版本的信息 OpenSearch,请参见升级亚马逊 OpenSearch 服务域名

可选更新与必需更新

OpenSearch 服务有两大类服务软件更新:

可选更新

可选服务软件更新通常包括增强功能以及新特性或新功能支持。域不会强制执行可选更新,可选更新安装不存在硬性截止日期要求。通过电子邮件和控制台通知传达更新发布日期。您可以选择立即应用更新,也可以将其重新安排到更合适的日期和时间。您也可以在域的非高峰时段安排更新。绝大多数软件更新为可选更新。

无论您是否计划更新,如果您对域进行更改以导致蓝/绿部署,S OpenSearch ervice 都会自动为您更新服务软件。

您可以配置域,在非高峰时段自动应用可选更新。启用此选项后, OpenSearch 服务将在可选更新可用后至少等待 13 天,然后计划在 72 小时(三天)后进行更新。计划更新时,将收到控制台通知,您可以选择重新安排在未来的某个日期执行更新。

要启用自动软件更新,请在创建或更新域时选择启用自动软件更新。要使用配置相同的设置 AWS CLI,请在创建或更新域名true时设置为--software-update-options

必需更新:

必需服务软件更新通常包括重要安全修复或其他强制更新,以确保域的持续完整性和功能性。例如,必需更新包括 Log4j 常见漏洞和风险 (CVE) 以及强制执行实例元数据服务版本 2 (IMDSv2)。一年的强制更新次数通常少于三次。

OpenSearch Service 会自动安排这些更新,并在预定更新前 72 小时(三天)通过电子邮件和控制台通知通知您。您可以选择立即应用更新,也可以将其重新安排到更合适的日期和时间以及允许时间范围内的某个时间。您也可以在域的下一非高峰时段安排更新。如果您未对必需的更新采取任何操作,也没有进行任何导致蓝/绿部署的域更改,则 OpenSearch 服务可以在域的非高峰期限内,在指定的截止日期(通常为上线后 14 天)之后的任何时间启动更新。

无论何时安排更新,如果您对域名进行更改以导致蓝/绿部署,S OpenSearch ervice 都会自动为您更新您的域。

补丁更新

以“-P”和数字结尾的服务软件版本(例如 R20211203-P4)是补丁版本。补丁可能包括性能改进、次要错误修复以及安全修复或状态改进。补丁发行版不包含新功能或重大更改,并且通常不会对用户产生直接或明显的影响。服务软件通知将说明补丁版本是可选补丁还是必需补丁。

注意事项

决定是否更新域时,请考虑以下事项:

  • 通过手动更新域,您可以更快地利用新功能。当您选择 “更新” 时, OpenSearch 服务会将请求置于队列中,并在有时间时开始更新。

  • 当您启动服务软件更新时, OpenSearch 服务会在更新开始和完成更新时发送通知。

  • 软件更新使用蓝绿部署,以尽可能减少停机时间。更新可能会临时使集群的专用主节点紧张,因此请确保保持足够的容量来处理相关开销。

  • 通常在几分钟内完成更新,但如果您的系统负载过重,也可能需要几个小时甚至几天。考虑在配置的非高峰时段更新您的域,以避免长时间更新。

启动服务软件更新

您可以通过 OpenSearch 服务控制台 AWS CLI、或其中一个软件开发工具包请求服务软件更新。

请求服务软件更新
  1. 打开亚马逊 OpenSearch 服务控制台,网址为 https://console.aws.amazon.com/aos/home

  2. 选择域名以打开其配置。

  3. 选择操作更新,然后选择以下选项之一:

    • 立即应用更新 - 如果有可用容量,则立即安排在当前小时执行更新。如果容量不足,我们会提供其他可用时段供您选择。

    • 计划在非高峰时段执行更新 - 仅当为域启用非高峰时段时段时可用。计划在域配置的非高峰时段执行更新。无法保证下一个时段执行更新。视容量而定,可能会在接下来的几天内更新。有关更多信息,请参阅计划在非高峰时段执行软件更新

    • 计划特定日期和时间更新 - 计划在特定日期和时间执行更新。如果出于容量原因指定的时间不可用,则可以选择其他时段。

    如果计划在未来的某个日期(域的非高峰期之内或之外)执行更新,则可以随时重新安排更新。有关说明,请参阅重新计划操作

  4. 选择确认

发送启动服务软件更新的start-service-software-update AWS CLI 请求。此示例将更新立即添加到队列中:

aws opensearch start-service-software-update \ --domain-name my-domain \ --schedule-at "NOW"

响应:

{ "ServiceSoftwareOptions": { "CurrentVersion": "R20220928-P1", "NewVersion": "R20220928-P2", "UpdateAvailable": true, "Cancellable": true, "UpdateStatus": "PENDING_UPDATE", "Description": "", "AutomatedUpdateDate": "1969-12-31T16:00:00-08:00", "OptionalDeployment": true } }
提示

在请求更新之后,您可以在很小的时间范围内将其取消。这种PENDING_UPDATE状态的持续时间可能会有很大差异,这取决于您 AWS 区域 和 OpenSearch 服务正在执行的并发更新的数量。要取消更新,请使用控制台或cancel-service-software-update AWS CLI 命令。

如果请求失败并出现 BaseException,则表示出于容量原因指定的时间不可用,您必须指定其他时间。 OpenSearch 服务会在响应中提供其他可用时段建议。

此示例 Python 脚本使用中的 d escribe_domainstart_service_software_update 方法 AWS SDK for Python (Boto3) 来检查域是否有资格进行服务软件更新,如果有资格进行服务软件更新,则开始更新。您必须为 domain_name 提供一个值。

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. my_config = Config( # Optionally lets you specify a Region other than your default. region_name='us-east-1' ) domain_name = '' # The name of the domain to check and update client = boto3.client('opensearch', config=my_config) def getUpdateStatus(client): """Determines whether the domain is eligible for an update""" response = client.describe_domain( DomainName=domain_name ) sso = response['DomainStatus']['ServiceSoftwareOptions'] if sso['UpdateStatus'] == 'ELIGIBLE': print('Domain [' + domain_name + '] is eligible for a service software update from version ' + sso['CurrentVersion'] + ' to version ' + sso['NewVersion']) updateDomain(client) else: print('Domain is not eligible for an update at this time.') def updateDomain(client): """Starts a service software update for the eligible domain""" response = client.start_service_software_update( DomainName=domain_name ) print('Updating domain [' + domain_name + '] to version ' + response['ServiceSoftwareOptions']['NewVersion'] + '...') waitForUpdate(client) def waitForUpdate(client): """Waits for the domain to finish updating""" response = client.describe_domain( DomainName=domain_name ) status = response['DomainStatus']['ServiceSoftwareOptions']['UpdateStatus'] if status == 'PENDING_UPDATE' or status == 'IN_PROGRESS': time.sleep(30) waitForUpdate(client) elif status == 'COMPLETED': print('Domain [' + domain_name + '] successfully updated to the latest software version') else: print('Domain is not currently being updated.') def main(): getUpdateStatus(client)

计划在非高峰时段执行软件更新

2023 年 2 月 16 日之后创建的每个 OpenSearch 服务域在当地时间晚上 10:00 至上午 8:00 之间每天有 10 小时的时段,我们将其视为高峰时段。 OpenSearch 服务使用此窗口来安排域的服务软件更新。非高峰期更新有助于最大限度地减少在流量较高时段对集群专用主节点的压力。 OpenSearch 未经您的同意,服务无法在 10 小时之外启动更新。

  • 对于可选更新,S OpenSearch ervice 会通知您更新的可用性,并提示您在即将到来的非高峰时段安排更新。

  • 对于所需的更新,S OpenSearch ervice 会在即将到来的非高峰时段自动安排更新,并提前三天通知您。您可以重新安排更新(在非高峰时段之内或之外执行),但只能在要求的时间范围内完成更新。

对于每个域,您可以选择使用自定义时间覆盖默认开始时间晚上 10:00。有关说明,请参阅配置自定义非高峰窗口

计划在即将到来的非高峰时段执行更新
  1. 打开亚马逊 OpenSearch 服务控制台,网址为 https://console.aws.amazon.com/aos/home

  2. 选择域名以打开其配置。

  3. 选择操作更新

  4. 选择计划在非高峰时段执行更新

  5. 选择确认

您可以在非高峰时段选项卡上查看计划操作并随时重新安排时间。请参阅 查看计划的操作

要使用在即将到来的非高峰时段安排更新 AWS CLI,请发送StartServiceSoftwareUpdate请求并指定OFF_PEAK_WINDOW--schedule-at参数:

aws opensearch start-service-software-update \ --domain-name my-domain \ --schedule-at "OFF_PEAK_WINDOW"

监控服务软件更新

OpenSearch 当服务软件更新可用、需要更新、已启动、已完成或失败时,服务会发送通知。您可以在 OpenSearch 服务控制台的通知面板上查看这些通知。如果更新是可选的,通知严重性为 Informational,如果需要,严重性为 High

OpenSearch 服务还会向 Amazon 发送服务软件事件 EventBridge。您可以使用配置规则, EventBridge 以便在收到事件时发送电子邮件或执行特定操作。有关示例演练的信息,请参阅教程:发送有关可用软件更新的 Amazon SNS 警报

要查看发送给 Amazon 的每个服务软件事件的格式 EventBridge,请参阅服务软件更新事件

当域不符合更新资格时

如果您的域处于下表中所示的任何状态,则可能没有资格进行服务软件更新。

省/自治区/直辖市 描述
域正在处理中

域正在接受配置更改。在操作完成后检查更新资格。

红色集群状态

集群中的一个或多个索引为红色。有关问题排查步骤,请参阅红色集群状态

高错误率

OpenSearch 集群在尝试处理请求时返回了大量 5 xx 错误。此问题通常是因为同时读取或写入了过多的请求。请考虑减少流向集群的流量或扩展您的域。

裂脑

Split brain 意味着你的 OpenSearch 集群有多个主节点,并且已经分成两个集群,这些集群永远不会自行重新加入。您可以通过使用推荐数量的专用主节点避免裂脑。为了帮助您从裂脑恢复,请联系 AWS Support

Amazon Cognito 集成问题

您的域名对 OpenSearch 控制面板使用身份验证, OpenSearch 服务找不到一个或多个 Amazon Cognito 资源。如果缺少 Amazon Cognito 用户池,则通常会出现此问题。要更正此问题,请重新创建缺失的资源并配置 OpenSearch 服务域以使用该资源。

其他 服务问题

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