Amazon Elasticsearch Service
开发人员指南 (API 版本 2015-01-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

专用主节点

Amazon Elasticsearch Service 使用专用主节点 来提高集群稳定性。专用主节点执行群集管理任务,但不保留数据也不响应数据上传请求。此群集管理任务的卸载可增加您的域的稳定性。

我们建议您为每个生产 Amazon ES 域分配个专用主节点:

  1. 一个专用主节点意味着您在发生故障时没有备份。

  2. 两个专用主节点意味着您的群集没有必需的仲裁节点数,无法在发生故障时选择新的主节点。

    仲裁节点数为专用主节点数/2 + 1(向下舍入到最近的整数),当您创建域时,Amazon ES 将其设置为 discovery.zen.minimum_master_nodes

    在这种情况下,2/2 + 1 = 2。由于一个专用主节点发生了故障且仅存在一个备份,则群集没有达到仲裁节点数且无法选择新的主节点。

  3. 三个专用主节点(建议的数量)可在主节点发生故障时提供两个备份节点和必要的仲裁节点数 (2) 来选择新主节点。

  4. 四个专用主节点不比三个好,而且如果在只有两个 AZ 的区域中使用多个可用区 (AZ),则可能会导致问题。

    • 如果一个主节点发生故障,您有选择新主节点所需的仲裁节点数 (3)。如果两个节点发生故障,则您会失去该仲裁节点数,正如您具有三个专用主节点时一样。

    • 如果每个 AZ 有两个专用主节点且各区域之间无法相互通信,则任何一个区域都没有用于选择新主节点的仲裁节点数。

  5. 拥有五个专用主节点和拥有三个一样,可让您在失去两个节点的情况下保持仲裁节点数,但因为任何给定的时间都仅有一个专用主节点处于活动状态,所以此配置意味着要为四个空闲节点付费。许多客户发现,这一级别的故障转移保护有些过剩。

注意

如果您的集群没有必要的仲裁节点数来选择新的主节点,则集群的写入 读取请求均会失败。此行为不同于 Elasticsearch 的默认行为。

专用主节点执行以下群集管理任务:

  • 跟踪群集中的所有节点

  • 跟踪群集中的索引数量

  • 跟踪属于每个索引的分片数量

  • 维护群集中节点的路由信息

  • 在状态更新后更新群集状态,如在群集中创建索引和添加或移除节点

  • 在群集中的所有节点之间复制群集状态的更改

  • 通过发送心跳信号(用于监控集群中数据节点可用性的周期信号)来监控所有集群节点的运行状况

下图显示包含十个实例的 Amazon ES 域。七个实例是数据节点,三个是专用主节点。只有一个专用主节点处于活动状态,另外两个灰色专用主节点作为备份,以防活动的专用主节点发生故障。所有数据上传请求由七个数据节点提供,并且所有群集管理任务均卸载到活动的专用主节点。

虽然专用主节点不处理搜索和查询请求,但它们的大小与其管理的实例、索引和分片数量高度相关联。对于生产群集,我们建议专用主节点采用以下实例类型。这些建议基于典型工作负载,可能根据您的需求而有所不同。具有许多分片或字段映射的集群可受益于更大的实例类型。监控专用主节点指标以查看您是否需要使用更大的实例类型。

实例计数

推荐的最小专用主实例类型

1–10

c4.large.elasticsearch

10–30

c4.xlarge.elasticsearch

30–75

c4.2xlarge.elasticsearch

75–200

r4.4xlarge.elasticsearch