配置多 AZ 域 - Amazon Elasticsearch Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

配置多 AZ 域

每个 AWS 区域都是一个独立的地理区域,其中包含多个相互隔离的位置,这些位置称为可用区。为了防止数据丢失并在服务中断时最大限度地减少集群停机时间,您可以在同一个区域中的两个或三个可用区之间分配节点,这种配置称为多 AZ

对于运行生产工作负载的域,我们建议以下配置:

  • 选择通过 Amazon ES 支持三个可用区的区域:

    • 美国东部(弗吉尼亚北部、俄亥俄州)

    • 美国西部(俄勒冈)

    • 加拿大 (中部)

    • 欧洲(法兰克福、爱尔兰、伦敦、巴黎、米兰)

    • 亚太地区(新加坡、悉尼、东京、香港、孟买)

    • 中东(巴林)

    • 非洲(开普敦)

    • 中国 (宁夏)

  • 跨三个区域部署域。

  • 为专用主节点和数据节点选择最新一代实例类型。

  • 使用三个专用主节点和至少三个数据节点。

  • 为集群中的每个索引创建至少一个副本。

本节的其余部分提供了有关这些建议的解释和背景。

分片分配

如果您启用多 AZ,则应该为集群中的每个索引创建至少一个副本。没有副本,Amazon ES 无法将您的数据副本分发到其他可用区,这在很大程度上违背了多 AZ 的目的。幸运的是,所有索引的默认配置均为副本数量等于 1。如下图所示, Amazon ES 尽最大努力将主分片及其对应的副本分片分配到不同的区域。

除了按可用区分配分片外,Amazon ES 还按节点分配分片。但是,某些域配置可能会导致分片计数不平衡。考虑以下域:

  • 5 个数据节点

  • 5 个主分片

  • 2 个副本

  • 3 个可用区

在这种情况下,Amazon ES 必须使一个节点过载,以便跨区域分配主分片和副本分片,如下图所示。

为避免这些可能导致单个节点紧张并损害性能的情况,如果您计划每个索引有两个或更多副本,我们建议您选择一个为三的倍数的实例计数。

专用主节点分配

即使您在配置域时选择了两个可用区,Amazon ES 也会自动在三个可用区中分配专用主节点。此分发有助于在区域遇到服务中断时防止集群停机。如果您使用推荐的三个专用主节点并且一个可用区域关闭,则您的集群仍具有配额数量 (2) 的专用主节点,并且可以选择新的主节点。下图演示了此配置。

这种自动分配有一些值得注意的例外情况:

  • 如果您选择三个可用区中不可用的较旧一代实例类型,则以下方案适用:

    • 如果您为域选择了三个可用区,则 Amazon ES 会引发错误。请选择其他实例类型,然后重试。

    • 如果您为域选择了两个可用区,则 Amazon ES 会在两个区域中分配专用主节点。

  • 并非所有 AWS 区域都有三个可用区。在这些区域中,您只能将域配置为使用两个区域(Amazon ES 只能在两个区域中分配专用主节点)。有关支持三个可用区的区域的列表,请参阅配置多 AZ 域

可用区中断

可用区中断很少见,但仍会出现。下表列出了中断期间的不同多 AZ 配置和行为。

一个区域中的可用区数量 您选择的可用区数量 专用主节点的数量 一个可用区遇到中断时的行为
2 或更多 2 0

停机时间。您的集群丢失了一半的数据节点,并且必须替换剩余可用区中的至少一个,然后才能选择主节点。

2 2 3

50/50 机会的停机时间。Amazon ES 将两个专用主节点分配到一个可用区中,将一个分配到另一个可用区中:

  • 如果具有一个专用主节点的可用区遇到中断,则剩余可用区中的两个专用主节点可以选择主节点。

  • 如果具有两个专用主节点的可用区遇到中断,则在剩余可用区可以添加专用主节点并选择主节点之前,集群不可用。

3 或更多 2 3

无停机时间。Amazon ES 会自动在三个可用区中分配专用主节点,因此剩余的两个专用主节点可以选择主节点。

3 或更多 3 0

无停机时间。大约三分之二的数据节点仍可用于选择主节点。

3 或更多 3 3

无停机时间。其余两个专用主节点可以选择主节点。

所有配置中,无论原因如何,节点故障都可能导致集群的剩余数据节点经历一段时间的负载增加,而 Amazon ES 会自动配置新节点以替换现在缺失的节点。

例如,如果三区域配置中发生可用区中断,则三分之二的数据节点必须处理所有集群请求。当它们处理这些请求时,其余节点也会在新节点上线时将分片复制到新节点上,这可能会进一步影响性能。如果可用性对您的工作负载至关重要,请考虑向集群中添加资源以缓解此问题。

注意

Amazon ES 透明地管理多可用区区域,因此,您无法手动模拟可用区中断。