

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

# Amazon OpenSearch Service 中的服务软件更新
<a name="service-software"></a>

**注意**  
有关每个*主要*（非补丁）服务软件更新中所做的更改和新增功能说明，请参阅[发布说明](release-notes.md)。

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

服务软件更新不同于 OpenSearch 服务*版本*升级。有关升级到更高版本的 Serv OpenSearch ice 的信息，请参阅[升级 Amazon OpenSearch Service 域](version-migration.md)。

 OpenSearch 服务要求您在所需的服务软件更新可用后 30 天内应用这些更新。这些更新对于维护安全合规性至关重要。

 如果您未在 30 天内应用所需的更新，您将每 15 天收到一次提醒通知，持续 30 天。在这段时间不合规之后，您的域名将被隔离，并产生以下影响：
+ 您的域名的所有网络访问权限均已删除
+ 域状态更改为已**隔离**
+ 在您应用所需的更新之前，该域将无法使用

 隔离期间，您将在 60 天内继续每 15 天收到一次提醒通知。如果您未在此期限内应用所需的更新，则您的 OpenSearch 服务域和所有关联数据将被永久删除。有关更多信息，请参阅[验证错误疑难解答](managedomains-configuration-changes.md#validation)。

## 可选更新与必需更新
<a name="service-software-optional-required"></a>

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

### 可选更新
<a name="service-software-optional"></a>

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

无论您是否计划更新，如果您对域进行更改以导致[蓝/绿部署](managedomains-configuration-changes.md)，S OpenSearch ervice 都会自动为您更新服务软件。

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

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

### 必需更新：
<a name="service-software-required"></a>

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

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

无论何时安排更新，如果您对域名进行更改以导致[蓝/绿部署](managedomains-configuration-changes.md)，S OpenSearch ervice 都会自动为您更新您的域。

## 补丁更新
<a name="service-software-patches"></a>

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

## 注意事项
<a name="service-software-considerations"></a>

决定是否更新域时，请考虑以下事项：
+ 通过手动更新域，您可以更快地利用新功能。当您选择 “**更新**” 时， OpenSearch 服务会将请求置于队列中，并在有时间时开始更新。
+ 当您启动服务软件更新时， OpenSearch 服务会在更新开始和完成更新时发送通知。
+ 软件更新使用 blue/green 部署来最大限度地减少停机时间。更新可能会临时使集群的专用主节点紧张，因此请确保保持足够的容量来处理相关开销。
+ 通常在几分钟内完成更新，但如果您的系统负载过重，也可能需要几个小时甚至几天。考虑在配置的[非高峰时段](off-peak.md)更新您的域，以避免长时间更新。

## 启动服务软件更新
<a name="service-software-requesting"></a>

您可以通过服务控制台 Amazon CLI、或其中一个来请求 OpenSearch 服务软件更新 SDKs。

### 控制台
<a name="service-software-request-console"></a>

**请求服务软件更新**

1. 在[https://console.aws.amazon.com/aos/家](https://console.amazonaws.cn/aos/home)中打开亚马逊 OpenSearch 服务控制台。

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

1. 选择**操作**、**更新**，然后选择以下选项之一：
   + **立即应用更新** - *如果有可用容量*，则立即安排在当前小时执行更新。如果容量不足，我们会提供其他可用时段供您选择。
   + **计划在非高峰时段执行更新** - 仅当为域启用非高峰时段时段时可用。计划在域配置的非高峰时段执行更新。无法保证下一个时段执行更新。视容量而定，可能会在接下来的几天内更新。有关更多信息，请参阅 [计划在非高峰时段执行软件更新](#service-software-offpeak)。
   + **计划特定日期和时间更新** - 计划在特定日期和时间执行更新。如果出于容量原因指定的时间不可用，则可以选择其他时段。

   如果计划在未来的某个日期（域的非高峰期之内或之外）执行更新，则可以随时重新安排更新。有关说明，请参阅[重新计划操作](off-peak.md#off-peak-reschedule)。

1. 选择**确认**。

### Amazon CLI
<a name="service-software-request-cli"></a>

发送启动服务软件更新的[start-service-software-update](https://docs.amazonaws.cn/cli/latest/reference/opensearch/start-service-software-update.html) Amazon 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 服务会在响应中提供其他可用时段建议。

### Amazon SDKs
<a name="service-software-request-sdk"></a>

此示例 Python 脚本使用中的 d [escribe\$1domain](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/opensearch.html#OpenSearchService.Client.describe_domain) 和 [start\$1service\$1software\$1update 方法 适用于 Python (Boto3) 的 Amazon SDK 来检查域是否有资格进行服务软件更新](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/opensearch.html#OpenSearchService.Client.start_service_software_update)，如果符合更新条件，则开始更新。您必须为 `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)
```

## 计划在非高峰时段执行软件更新
<a name="service-software-offpeak"></a>

2023 年 2 月 16 日之后创建的每个 OpenSearch 服务域在当地时间晚上 10:00 至上午 8:00 之间每天有 10 小时的时段，我们将其视为[非](off-peak.md)高峰时段。 OpenSearch 服务使用此窗口来安排域的服务软件更新。非高峰期更新有助于最大限度地减少在流量较高时段对集群专用主节点的压力。 OpenSearch 未经您的同意，服务无法在 10 小时之外启动更新。
+ 对于*可选*更新，S OpenSearch ervice 会通知您更新的可用性，并提示您在即将到来的非高峰时段安排更新。
+ 对于*所需的*更新，S OpenSearch ervice 会在即将到来的非高峰时段自动安排更新，并提前三天通知您。您可以重新安排更新（在非高峰时段之内或之外执行），但只能在要求的时间范围内完成更新。

对于每个域，您可以选择使用自定义时间覆盖默认开始时间晚上 10:00。有关说明，请参阅[配置自定义非高峰窗口](off-peak.md#off-peak-custom)。

### 控制台
<a name="service-software-offpeak-console"></a>

**计划在即将到来的非高峰时段执行更新**

1. 在[https://console.aws.amazon.com/aos/家](https://console.amazonaws.cn/aos/home )中打开亚马逊 OpenSearch 服务控制台。

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

1. 选择**操作**、**更新**。

1. 选择**计划在非高峰时段执行更新**。

1. 选择**确认**。

您可以在**非高峰时段**选项卡上查看计划操作并随时重新安排时间。请参阅[查看计划的操作](off-peak.md#off-peak-view)。

### CLI
<a name="service-software-offpeak-cli"></a>

要使用在即将到来的非高峰时段安排更新 Amazon CLI，请发送[StartServiceSoftwareUpdate](https://docs.amazonaws.cn/opensearch-service/latest/APIReference/API_StartServiceSoftwareUpdate.html)请求并指定`OFF_PEAK_WINDOW``--schedule-at`参数：

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

## 监控服务软件更新
<a name="service-software-monitor"></a>

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

OpenSearch 服务还会向 Amazon 发送服务软件事件 EventBridge。您可以使用配置规则， EventBridge 以便在收到事件时发送电子邮件或执行特定操作。有关演练示例，请参阅[教程：发送有关可用软件更新的 Amazon SNS 警报](sns-events.md)。

要查看发送给 Amazon 的每个服务软件事件的格式 EventBridge，请参阅[服务软件更新事件](monitoring-events.md#monitoring-events-sso)。

## 当域不符合更新资格时
<a name="service-software-ineligible"></a>

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


| 州 | 说明 | 
| --- | --- | 
| 域正在处理中 |  域正在接受配置更改。在操作完成后检查更新资格。  | 
| 红色集群状态 |  集群中的一个或多个索引为红色。有关问题排查步骤，请参阅[红色集群状态](handling-errors.md#handling-errors-red-cluster-status)。  | 
| 高错误率 |   OpenSearch 集群在尝试处理请求时返回了大量 5 *xx* 错误。此问题通常是因为同时读取或写入了过多的请求。请考虑减少流向集群的流量或扩展您的域。  | 
| 裂脑 |  *Split brain* 意味着你的 OpenSearch 集群有多个主节点，并且已经分成两个集群，这些集群永远不会自行重新加入。您可以通过使用推荐数量的[专用主节点](managedomains-dedicatedmasternodes.md)避免裂脑。为了帮助您从裂脑恢复，请联系 [Amazon Web Services 支持](https://console.amazonaws.cn/support/home)。  | 
| Amazon Cognito 集成问题 |  您的域名[对 OpenSearch 控制面板使用身份验证](cognito-auth.md)， OpenSearch 服务找不到一个或多个 Amazon Cognito 资源。如果缺少 Amazon Cognito 用户池，则通常会出现此问题。要更正此问题，请重新创建缺失的资源并配置 OpenSearch 服务域以使用该资源。  | 
| 其他 服务问题 |   OpenSearch 服务本身的问题可能会导致您的域名显示为不符合更新条件。如果上述情况都不适用于您的域且该问题持续超过一天，请联系 [Amazon Web Services 支持](https://console.amazonaws.cn/support/home)。  | 