本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊服务中的OpenSearch服务软件更新
注意
有关每次主要(非补丁)服务软件更新中所做的更改和添加的说明,请参阅发行说明。
亚马逊OpenSearch服务会定期发布服务软件更新,以添加功能或以其他方式改进您的域名。控制台中的 Notifications(通知)面板是查看是否有可用的更新或检查更新状态的最简单方法。每个通知都包含有关服务软件更新的详细信息。所有服务软件更新都使用蓝/绿部署,以最大限度地减少停机时间。
服务软件更新不同于OpenSearch版本升级。有关升级到更高版本的 OpenSearch 的信息,请参阅升级亚马逊OpenSearch服务域。
可选更新与必需更新
OpenSearch服务有两大类服务软件更新:
可选更新
可选服务软件更新通常包括对新特性或功能的增强和支持。可选更新不会在您的域名上强制执行,安装它们也没有硬性截止日期。更新的可用性通过电子邮件和控制台通知进行沟通。您可以选择立即应用更新,也可以将其重新安排到更合适的日期和时间。您也可以将其安排在域名的非高峰时段。大多数软件更新是可选的。
无论您是否计划更新,如果您对导致蓝/绿部署的域进行了更改,Serv OpenSearch ice 都会自动为您更新您的域。
您可以将域名配置为在非高峰时段自动应用可选更新。启用此选项后,OpenSearch服务将在可选更新可用后等待至少 13 天,然后在 72 小时(三天)后安排更新。计划更新时,您会收到控制台通知,您可以选择将其重新安排到以后的日期。
要开启自动软件更新,请在创建或更新域名时选择启用自动软件更新。要使用配置相同的设置Amazon CLI,请在创建或更新域true
时设置为--software-update-options
。
必需的更新
所需的服务软件更新通常包括重要的安全修复或其他强制性更新,以确保您的域名的持续完整性和功能。所需更新的示例包括 Log4j 常见漏洞和暴露 (CVE) 和实例元数据服务版本 2 (imdsv2) 的强制执行。一年中的强制更新次数通常少于三次。
OpenSearch服务会自动安排这些更新,并在预定更新前 72 小时(三天)通过电子邮件和控制台通知通知通知您。您可以选择立即应用更新,也可以在允许的时间范围内将其重新安排到更合适的日期和时间。您也可以将其安排在域名的下一个非高峰时段。如果您未对所需的更新采取任何操作,也没有进行任何导致蓝/绿部署的域更改,则OpenSearch服务可以在域的非高峰期限内,在指定截止日期(通常为可用后 14 天)之后的任何时间启动更新。
无论何时计划更新,如果您对导致蓝/绿部署的域进行了更改,Serv OpenSearch ice 都会自动为您更新您的域。
补丁更新
以“-P”和数字结尾的服务软件版本(例如 R20211203-P4
)是补丁版本。补丁可能包括性能改进、次要错误修复以及安全修复或状态改进。补丁版本不包含新功能或重大更改,通常不会对用户产生直接或明显的影响。服务软件通知会告诉您补丁版本是可选的还是强制性的。
注意事项
决定是否更新域时,请考虑以下事项:
-
通过手动更新域,您可以更快地利用新功能。当您选择 “更新” 时,Serv OpenSearch ice 会将请求置于队列中,并在有时间时开始更新。
-
当您启动服务软件更新时,OpenSearch服务会在更新开始和完成时发送通知。
-
软件更新使用蓝绿部署,以尽可能减少停机时间。更新可能会临时使集群的专用主节点紧张,因此请确保保持足够的容量来处理相关开销。
-
通常在几分钟内完成更新,但如果您的系统负载过重,也可能需要几个小时甚至几天。考虑在配置的非高峰时段更新您的域名,以避免更新时间过长。
启动服务软件更新
您可以通过OpenSearch服务控制台、或其中一个 SDK 请求服务软件更新。Amazon CLI
请求服务软件更新
-
通过 https://console.aws.amazon.com/aos/home
打开亚马逊OpenSearch服务控制台。 -
选择域名以打开其配置。
-
选择操作,更新,然后选择以下选项之一:
-
立即@@ 应用更新-如果有可用容量,立即将操作安排在当前一小时内执行。如果容量不可用,我们会提供其他可用时段供您选择。
-
将其安排在非高峰时段-仅在为域名启用非高峰时段时才可用。将更新安排在域配置的非高峰时段内进行。无法保证更新会在下一个即时窗口内发生。视容量而定,这可能会在接下来的几天内发生。有关更多信息,请参阅在非高峰时段安排软件更新:
-
安排特定日期和时间-将更新安排在特定的日期和时间进行。如果您指定的时间由于容量原因不可用,则可以选择其他时段。
如果您将更新安排在以后的日期(在域名的非高峰期内或之外),则可以随时重新安排。有关说明,请参阅 重新安排行动。
-
-
选择 Confirm(确认)。
发送start-service-software-updateAmazon 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
状态的持续时间可能有很大差异,取决于您Amazon Web Services 区域和该OpenSearch服务正在执行的并发更新的数量。要取消更新,请使用控制台或cancel-service-software-update
Amazon CLI命令。
如果请求失败并显示为BaseException
,则表示由于容量原因,您指定的时间不可用,您必须指定不同的时间。OpenSearch服务在响应中提供其他可用时段建议。
此示例 Python 脚本使用 Amazon SDK for Python (Boto3) 中的 describe_domaindomain_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 小时窗口之外启动更新。
-
对于可选更新,OpenSearch服务会通知您更新的可用性,并提示您在即将到来的非高峰时段安排更新。
-
对于所需的更新,OpenSearch服务会自动将更新安排在即将到来的非高峰时段,并提前三天通知您。您可以重新安排更新(在非高峰期内或非高峰时段内),但只能在完成更新所需的时间范围内。
对于每个域,您可以选择使用自定义时间覆盖默认的晚上 10:00 开始时间。有关说明,请参阅 配置自定义非高峰时段。
在即将到来的非高峰时段安排更新
-
通过 https://console.aws.amazon.com/aos/home
打开亚马逊OpenSearch服务控制台。 -
选择域名以打开其配置。
-
选择操作,更新。
-
选择 “在非高峰时段安排”。
-
选择 Confirm(确认)。
您可以在 “非高峰时段” 选项卡上查看预定操作并随时重新安排。请参阅查看预设操作。
要使用在即将到来的非高峰时段安排更新Amazon 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服务还向亚马逊发送服务软件事件EventBridge。您可以EventBridge用于配置在收到事件时发送电子邮件或执行特定操作的规则。有关示例演练的信息,请参阅教程:发送有关可用软件更新的 Amazon SNS 警报:
要查看发送给亚马逊的每个服务软件事件的格式EventBridge,请参阅服务软件更新事件。
当域不符合更新资格时
如果您的域处于下表中所示的任何状态,则可能没有资格进行服务软件更新。
状态 | 描述 |
---|---|
域正在处理中 |
域正在接受配置更改。在操作完成后检查更新资格。 |
红色集群状态 |
集群中的一个或多个索引为红色。有关问题排查步骤,请参阅红色集群状态。 |
高错误率 |
在尝试处理请求时,OpenSearch 集群返回大量 5xx 错误。此问题通常是因为同时读取或写入了过多的请求。请考虑减少流向集群的流量或扩展您的域。 |
裂脑 |
Split brain 意味着你的OpenSearch集群有多个主节点,并且已经分裂成两个永远不会自行重新加入的集群。您可以通过使用推荐数量的专用主节点避免裂脑。为了帮助您从裂脑恢复,请联系 Amazon Web Services Support |
Amazon Cognito 集成问题 |
您的域名使用OpenSearch仪表板身份验证,OpenSearch服务找不到一个或多个 Amazon Cognito 资源。如果缺少 Amazon Cognito 用户池,则通常会出现此问题。要更正此问题,请重新创建缺失的资源并配置OpenSearch服务域以使用该资源。 |
其他 服务问题 |
OpenSearch服务本身的问题可能会导致您的域名显示为不符合更新条件。如果上述情况都不适用于您的域且该问题持续超过一天,请联系 Amazon Web Services Support |