本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon OpenSearch 服务中进行配置更改
更新域名时,Amazon S OpenSearch ervice 使用蓝/绿部署流程。blue/green deployment creates an idle environment for domain updates that copies the production environment, and routes users to the new environment after those updates are complete. In a blue/green部署时,蓝色环境是当前的生产环境。绿色环境是闲置环境。
将数据从蓝色环境迁移至绿色环境。当新环境准备就绪时,S OpenSearch ervice 会切换环境,将绿色环境提升为新的生产环境。切换时不会丢失数据。此实践可在部署到新环境未成功的情况下最大程度地减少停机时间并维护原始环境。
通常会导发蓝/绿部署的更改
以下操作会引发蓝/绿部署:
-
更改实例类型
-
启用精细访问控制
-
执行服务软件更新
-
启用或禁用专用主节点
-
启用或禁用不带待机功能的多可用区
-
更改存储类型、卷类型或卷大小
-
选择不同的VPC子网
-
添加或移除VPC安全组
-
为控制面板启用或禁用 Amazon Cognito 身份验证 OpenSearch
-
选择不同的 Amazon Cognito 用户池或身份池
-
修改高级设置
-
升级到新 OpenSearch 版本(在部分或全部升级过程中,OpenSearch 仪表板可能不可用)
-
启用静态数据加密或 node-to-node加密
-
启用或禁用 UltraWarm 或冷存储
-
禁用自动调整和回滚其更改
-
关联和取消关联可选插件与域
-
增加具有两个专用主节点的多可用区域的专用主节点数量
-
减小EBS卷大小
-
更改EBS卷大小或吞吐量(如果您所做的最后一次更改正在进行中或发生在 6 小时以前)IOPS
-
允许向发布审核日志 CloudWatch。
对于带待机功能的多可用区的域,一次只能提出一个更改请求。如果已有更改正在执行,则会拒绝新请求。您可以使用查看当前变更的状态DescribeDomainChangeProgress
API。
通常不会导发蓝/绿部署的更改
在大多情况下,以下操作不会引发蓝/绿部署:
-
修改访问策略
-
修改自定义端点
-
更改传输层安全 (TLS) 策略
-
更改自动快照时间
-
启用或禁用 “需要” HTTPS
-
在不回滚其更改的情况下启用自动调整或禁用它
-
如果您的域有专用的主节点,请更改数据节点或 UltraWarm 节点数量
-
如果域具有专用主节点,则更改专用主实例类型或节点数量(具有两个专用主节点的多可用区域除外)
-
启用或禁用向发布错误日志或慢速日志 CloudWatch
-
禁止向发布审核日志 CloudWatch
-
将每个数据节点的卷大小增加到 3 TiB,更改卷类型或吞吐IOPS量
-
添加或删除标签
注意
存在一些异常情况,具体取决于您的服务软件版本。如果要确保更改不会导致蓝绿部署,请先执行试运行(如果此选项可用),然后再更新域。某些更改不提供试运行选项。一般而言,我们建议您在流量高峰时段之外对集群进行更改。
确定更改是否会导发蓝绿部署
您可以对某些类型的计划配置更改进行测试,以在无需提交更改的情况下确定是否会导致蓝绿部署。在启动配置更改之前,请使用控制台或运行验证检查,以确保您的域名符合更新条件。API
启动和跟踪配置更改
注意
一次只能请求一个配置更改。您还可以将多个配置更改分入单个请求中。等待域状态变为 Active
后再请求任何其他的配置更改。
您可以在 Amazon S OpenSearch ervice 控制台中查看 “域处理状态” 和 “配置更改状态” 字段,以跟踪域名和配置更改。您还可以通过API响应中的和ConfigChangeStatus
参数来跟踪域DomainProcessingStatus
和配置的更改。有关更多信息,请参阅 OpenSearch 服务API参考中的DomainStatus数据类型。
域处理状态可见性:您可以通过查看控制台中的域处理状态字段,轻松确定域的配置状态。同样,该DomainProcessingStatus
API参数也可用于识别状态。域的处理状态值如下:
-
Active
:未执行任何配置更改。您可以提交新的配置更改请求。 -
Creating
:正在创建域。 -
Modifying
:正在进行配置更改,例如添加新的数据节点EBS、gp3、IOPS配置或设置KMS密钥。注意
如果域需要移动分片才能完成配置更改,则您可能会看到
Modifying
状态。为了向后兼容,Processing
参数的行为在API响应中保持不变,并且在核心配置更改完成后立即设置为 false,无需等待分片移动完成。 -
Upgrading Engine Version
:正在执行引擎版本升级。 -
Updating Service Software
:正在执行软件更新。 -
Deleting
:正在删除域。 -
Isolated
:域已暂停。
配置状态可见性:配置更改可以由操作人员启动(例如添加新的数据节点、更改实例类型),也可以由服务启动(例如自动微调和非高峰时段更新)。您可以在 Amazon S OpenSearch ervice 控制台的配置更改状态字段和ConfigChangeStatus
API响应中找到最新配置更改详细信息的状态。以下值指示域的配置状态:
-
Pending
:配置更改请求已提交。 -
Initializing
:服务正在启动配置更改请求。 -
Validating
:服务正在验证请求的更改和所需的资源。 -
Awaiting user inputs
:在操作人员预计某些配置更改(例如实例类型更改)会继续执行时适用。您可以编辑配置更改。 -
Applying changes
:服务正在应用请求的配置更改。 -
Cancelled
:配置更改已取消。如果您收到验证失败状态,则可以在控制台中单击 “取消” 或调用该CancelDomainConfigChange
API操作。如果执行此操作,则所有已应用的更改都将回滚。 -
Completed
:请求的配置更改已成功完成。 -
Validation Failed
:请求的更改验证失败。没有应用任何配置更改。注意
验证失败可能是因域中存在红色索引、所选实例类型不可用或磁盘空间不足所致。有关验证错误的列表,请参阅对验证错误进行故障排除。出现验证失败事件时,您可以取消、重试或编辑配置更改。
API摘要:您可以使用DescribeDomain
DescribeDomainChangeProgress
、和DescribeDomainConfig
API操作来获取详细的配置更新状态。此外,您还可以在验证失败时使用 CancelDomainConfigChange
取消更新。有关更多信息,请参阅OpenSearch 服务API文档
配置更改完成后,域状态将变回 Active
。
您可以查看集群运行状况和 Amazon CloudWatch 指标,发现域更新发生时,集群中的节点数量会暂时增加(通常是翻一番)。在下图中,您可以看到配置更改期间的节点从 11 个翻倍至 22 个,然后在更新完成后返回至 11 个。
这种临时的增加可能会对集群的专用主节点造成压力,其要管理的节点数可能突然增加。当 S OpenSearch ervice 将数据从旧集群复制到新集群时,它还可以增加搜索和索引延迟。在集群上保持充足的容量很重要,这有助于处理与这些蓝/绿部署相关的开销。
重要
在配置更改和服务维护期间,您不会 产生任何额外费用。您只需要为您的集群请求的节点数量付费。有关具体信息,请参阅配置更改的费用。
为防止专用主节点过载,您可以使用 Amazon CloudWatch 指标监控使用情况。有关推荐的最大值,请参阅Amazon OpenSearch 服务的推荐 CloudWatch 警报。
配置更改的阶段
在您启动配置更改后,S OpenSearch ervice 会通过一系列步骤来更新您的域名。您可以在控制台中的配置更改状态下查看配置更改的进度。更新经过的确切步骤取决于您正在进行的更改的类型。您也可以使用DescribeDomainChangeProgressAPI操作监控配置更改。
以下是在配置更改期间更新可能经历的阶段:
阶段名称 | 描述 |
---|---|
验证 |
验证域是否符合更新条件,如有必要,显示验证问题。 |
创建新环境 |
完成必要的先决条件并创建所需的资源以启动蓝/绿部署。 |
预置新节点 |
在新环境中创建新的实例组。 |
新节点上的流量路由 |
将流量重定向到新创建的数据节点。 |
旧节点上的流量路由 |
禁用旧数据节点上的流量。 |
准备要删除的节点 |
准备移除节点。此步骤仅在您将域缩小(例如,从 8 个节点缩小到 6 个节点)时才会发生。 |
将分片复制到新节点 |
将分片从旧节点移动到新节点。 |
终止节点 |
删除分片后,终止并删除旧节点。 |
删除较旧资源 |
删除与旧环境关联的资源(例如负载均衡器)。 |
动态更新 |
当更新不需要蓝/绿部署且可以动态应用时显示。 |
应用与专用主节点相关的更改 |
当专用主实例类型或计数更改时显示。 |
应用与卷相关的更改 |
当卷大小、类型IOPS和吞吐量发生变化时显示。 |
蓝绿部署对性能的影响
在蓝/绿部署期间,您的 Amazon S OpenSearch ervice 集群可用于传入的搜索和索引请求。但是,您可能会遇到以下性能问题:
-
由于集群需要管理更多的节点,领导节点的使用量暂时增加。
-
由于 OpenSearch 服务将数据从旧节点复制到新节点,因此增加了搜索和索引延迟。
-
由于集群负载在蓝绿部署期间增加,对传入请求的拒绝情况增加。
-
为避免延迟问题和请求被拒绝,您应在集群运行状况良好且网络流量较低时运行蓝绿部署。
配置更改的费用
如果您更改域的配置,S OpenSearch ervice 会按中所述创建一个新集群在 Amazon OpenSearch 服务中进行配置更改。在从旧群集迁移到新群集时,会产生以下费用:
-
如果您更改实例类型,第一个小时两个集群都会收费。第一个小时后,您只需为新群集付费。EBS由于卷是您的集群的一部分,因此不会因为它们是您的集群的一部分而收取两次费用,因此它们的计费遵循实例计费。
示例:您将配置从三个
m3.xlarge
实例更改为四个m4.large
实例。在第一个小时中,两个集群都需要收费 (3 个m3.xlarge
+ 4 个m4.large
)。第一个小时后,您只需为新集群付费 (4 个m4.large
)。 -
如果您未更改实例类型,第一个小时您只需要为最大的集群付费。第一个小时后,您只需为新集群付费。
示例: 您将配置从六个
m3.xlarge
实例更改为三个m3.xlarge
实例。在第一个小时,您只需要为最大的集群付费 (6 个m3.xlarge
)。第一个小时后,您只需为新集群付费 (3 个m3.xlarge
)。
对验证错误进行故障排除
当您启动配置更改或执行 OpenSearch 或 Elasticsearch 版本升级时,Serv OpenSearch ice 会首先执行一系列验证检查,以确保您的域符合更新条件。如果其中任何一项检查失败,您将在控制台中收到通知,其中包含在更新域之前必须修复的特定问题。下表列出了 OpenSearch 服务可能出现的域名问题以及解决这些问题的步骤。
问题 | 错误代码 | 故障排除步骤 |
---|---|---|
未找到安全组 | SecurityGroupNotFound |
与您的 OpenSearch 服务域关联的安全组不存在。要解决此问题,请使用指定的名称创建安全组。 |
未找到子网 | SubnetNotFound |
与您的 OpenSearch 服务域关联的子网不存在。要解决此问题,请在中创建子网VPC。 |
未配置服务相关角色 | SLRNotConfigured |
未配置服务的 OpenSearch 服务相关角色。服务相关角色由 S OpenSearch ervice 预定义,包括该服务代表您调用其他 AWS 服务所需的所有权限。如果该角色不存在,您可能需要手动创建角色。 |
没有足够的 IP 地址 | InsufficientFreeIPsForSubnets |
您的一个或多个VPC子网没有足够的 IP 地址来更新您的域名。要计算您需要的 IP 地址数量,请参阅在VPC子网中保留 IP 地址。 |
Cognito 用户群体不存在 | CognitoUserPoolNotFound |
OpenSearch 服务找不到 Amazon Cognito 用户池。确认您已创建一个用户池并具有正确的 ID。要查找该 ID,您可以使用 Amazon Cognito 控制台或以下 AWS CLI 命令:
|
Cognito 身份群体不存在 | CognitoIdentityPoolNotFound |
OpenSearch 服务找不到 Cognito 身份池。确认您已创建一个用户池并具有正确的 ID。要查找该 ID,您可以使用 Amazon Cognito 控制台或以下 AWS CLI 命令:
|
找不到用户群体的 Cognito 域 | CognitoDomainNotFound |
用户池没有域名。您可以使用 Amazon Cognito 控制台或以下 AWS CLI 命令进行配置:
|
未配置 Cognito 角色 | CognitoRoleNotConfigured |
未配置向 OpenSearch 服务授予配置 Amazon Cognito 用户和身份池以及使用它们进行身份验证的权限的IAM角色。使用适当的权限集和信任关系配置角色。您可以使用控制台,它会为您创建默认CognitoAccessForAmazonOpenSearch角色,也可以使用 AWS CLI 或手动配置角色 AWS SDK。 |
无法描述用户群体 | UserPoolNotDescribable |
指定的 Amazon Cognito 角色无权描述与您的域关联的用户群体。确保角色权限策略允许 cognito-identity:DescribeUserPool 操作。请参阅 关于 CognitoAccessForAmazonOpenSearch 角色获取完全权限策略。 |
无法描述身份群体 | IdentityPoolNotDescribable |
指定的 Amazon Cognito 角色无权描述与您的域关联的身份群体。确保角色权限策略允许 cognito-identity:DescribeIdentityPool 操作。请参阅 关于 CognitoAccessForAmazonOpenSearch 角色获取完全权限策略。 |
无法描述用户群体和身份群体 | CognitoPoolsNotDescribable |
指定的 Amazon Cognito 角色无权描述与您的域关联的用户群体和身份群体。确保角色权限策略允许 cognito-identity:DescribeIdentityPool 和 cognito-identity:DescribeUserPool 操作。请参阅 关于 CognitoAccessForAmazonOpenSearch 角色获取完全权限策略。 |
KMS密钥未启用 | KMSKeyNotEnabled |
用于加密您的域名的 AWS Key Management Service (AWS KMS) 密钥已禁用。立即重新启用密钥。 |
自定义证书未处于ISSUED状态 | InvalidCertificate |
如果您的域使用自定义终端节点,则可以通过在 AWS Certificate Manager (ACM) 中生成SSL证书或导入自己的证书来保护该终端节点。证书状态必须为 Issued(已签发)。如果您收到此错误,请在ACM控制台中检查证书的状态。如果状态为 “已过期”、“失败”、“非活动” 或 “等待验证”,请参阅ACM疑难解答文档以解决问题。 |
容量不足,无法启动所选实例类型 | InsufficientInstanceCapacity |
请求的实例类型容量不可用。例如,您可能请求了五个 |
集群中的红色索引 | RedCluster |
集群中一个或多个索引的状态为红色,导致集群的整体状态为红色。要对此问题进行故障排除和修复,请参阅红色集群状态。 |
内存断路器,请求过多 | TooManyRequests |
您的域名有太多的搜索和写入请求,因此 S OpenSearch ervice 无法更新其配置。您可以减少请求数量,将实例垂直扩展到 64 GiBRAM,或者通过添加实例进行水平扩展。 |
新配置无法保存数据(磁盘空间不足) | InsufficientStorageCapacity |
配置的存储大小无法保存域中的所有数据。要解决此问题,请选择更大的卷,删除未使用的索引 |
固定到特定节点的分片 | ShardMovementBlocked |
您的域中的一个或多个索引已附加到特定节点,并且无法重新分配。发生这种情况的最可能原因是您配置了分片分配筛选,其使您能够指定允许哪些节点托管特定索引的分片。 要解决此问题,请从所有受影响的索引中删除分片分配筛选条件:
|
新配置无法保存所有分片(分片数) | TooManyShards |
您的域上的分片数过高,这会阻止 S OpenSearch ervice 将其移至新配置。要解决此问题,请通过添加与当前集群节点具有相同配置类型的节点来横向扩展域。请注意,最大EBS卷大小取决于节点的实例类型。 要防止将来出现此问题,请参阅 选择分片数量并定义适合您的使用案例的分片策略。 |
与您的域关联的子网不支持IPv4地址 |
|
要解决此问题,请VPC根据域中配置的 IP 地址类型创建子网或更新您的现有子网。如果您的域IPv4仅使用地址类型,请使用IPv4仅限子网。如果您的域使用双堆栈模式,请使用双堆栈子网。 |
与您的域关联的子网不支持IPv6地址 |
|
要解决此问题,请VPC根据域中配置的 IP 地址类型创建子网或更新您的现有子网。如果您的域IPv4仅使用地址类型,请使用IPv4仅限子网。如果您的域使用双堆栈模式,请使用双堆栈子网。 |