在 Amazon OpenSearch Service 中配置多 AZ 域
为了防止数据丢失并在服务中断时最大限度地减少 Amazon OpenSearch Service 集群停机时间,您可以在同一个区域中的两个或三个可用区之间分配节点,这种配置称为多 AZ。可用区是每个 Amazon 区域内的隔离位置。
对于运行生产工作负载的域,我们建议以下配置:
-
选择通过 OpenSearch Service 支持三个可用区的区域:
-
跨三个区域部署域。
-
为专用主节点和数据节点选择最新一代实例类型。
-
使用三个专用主节点和至少三个数据节点。
-
为集群中的每个索引创建至少一个副本。
本节的其余部分提供了有关这些建议的解释和背景。
分片分配
如果您启用多 AZ,则应该为集群中的每个索引创建至少一个副本。没有副本,OpenSearch Service 无法将您的数据副本分发到其他可用区,这在很大程度上违背了多 AZ 的目的。幸运的是,所有索引的默认配置均为副本数量等于 1。如下图所示,OpenSearch Service 尽最大努力将主分片及其对应的副本分片分配到不同的区域。

除了按可用区分配分片外,OpenSearch Service 还按节点分配分片。但是,某些域配置可能会导致分片计数不平衡。考虑以下域:
-
5 个数据节点
-
5 个主分片
-
2 个副本
-
3 个可用区
在这种情况下,OpenSearch Service 必须使一个节点过载,以便跨区域分配主分片和副本分片,如下图所示。

为避免这些可能导致单个节点紧张并损害性能的情况,如果您计划每个索引有两个或更多副本,我们建议您选择一个为三的倍数的实例计数。
专用主节点分配
即使您在配置域时选择了两个可用区,OpenSearch Service 也会自动在三个可用区中分配专用主节点。此分发有助于在区域遇到服务中断时防止集群停机。如果您使用推荐的三个专用主节点并且一个可用区域关闭,则您的集群仍具有配额数量 (2) 的专用主节点,并且可以选择新的主节点。下图演示了此配置。

这种自动分配有一些值得注意的例外情况:
-
如果您选择三个可用区中不可用的较旧一代实例类型,则以下方案适用:
-
如果您为域选择了三个可用区,则 OpenSearch Service 会引发错误。请选择其他实例类型,然后重试。
-
如果您为域选择了两个可用区,则 OpenSearch Service 会在两个区域中分配专用主节点。
-
-
并非所有 Amazon 区域都有三个可用区。在这些区域中,您只能将域配置为使用两个区域(OpenSearch Service 只能在两个区域中分配专用主节点)。
可用区中断
可用区中断很少见,但仍会出现。下表列出了中断期间的不同多 AZ 配置和行为。
一个区域中的可用区数量 | 您选择的可用区数量 | 专用主节点的数量 | 一个可用区遇到中断时的行为 |
---|---|---|---|
2 或更多 | 2 | 0 |
停机时间。您的集群丢失了一半的数据节点,并且必须替换剩余可用区中的至少一个,然后才能选择主节点。 |
2 | 2 | 3 |
50/50 机会的停机时间。OpenSearch Service 将两个专用主节点分配到一个可用区中,将一个分配到另一个可用区中:
|
3 或更多 | 2 | 3 |
无停机时间。OpenSearch Service 会自动在三个可用区中分配专用主节点,因此剩余的两个专用主节点可以选择主节点。 |
3 或更多 | 3 | 0 |
无停机时间。大约三分之二的数据节点仍可用于选择主节点。 |
3 或更多 | 3 | 3 |
无停机时间。其余两个专用主节点可以选择主节点。 |
在所有配置中,无论原因如何,节点故障都可能导致集群的剩余数据节点经历一段时间的负载增加,而 OpenSearch Service 会自动配置新节点以替换现在缺失的节点。
例如,如果三区域配置中发生可用区中断,则三分之二的数据节点必须处理所有集群请求。当它们处理这些请求时,其余节点也会在新节点上线时将分片复制到新节点上,这可能会进一步影响性能。如果可用性对您的工作负载至关重要,请考虑向集群中添加资源以缓解此问题。
OpenSearch Service 透明地管理多可用区区域,因此,您无法手动模拟可用区中断。