阿里云Elasticsearch(简称ES)通过跨可用区部署,确保了实例的高可用性。

概述

阿里云ES提供了跨可用区部署的方案。通过该方案,系统会自动选择库存充足的可用区创建集群。在索引配置了副本的情况下,当某一可用区出现故障时,剩余的可用区依然可以不间断地提供服务,显著增强了集群的可用性。同时,您可以通过控制台的切流操作,将出现故障的可用区隔离,这时系统会自动在剩余的可用区中补充计算资源,满足业务对资源的需求。

适用场景

阿里云ES可用区部署支持单可用区、跨2个可用区、跨3个可用区三种部署方式,各部署方式的适用场景如下:
  • 单可用区:普通部署模式,适用于非关键任务型的工作(默认)。
  • 跨2个可用区:跨可用区容灾部署模式,适用于生产型的工作。
  • 跨3个可用区:高可用部署模式,适用于具有更高可用性要求的生产型的工作。

实现机制

阿里云ES通过以下方式实现了服务的高可用性:

  • 可用区

    跨可用区部署不需要您手动选择多个可用区,系统会自动配置对应个数的可用区。

  • 节点
    • 必须购买3个专有主节点。在购买跨2个可用区实例时,阿里云ES采取了如下部署方案:
      • 如果该区域存在至少3个可用区,且ECS库存是充足的,专有主节点会被部署在3个可用区中。保证当任意一个可用区出现故障时,集群依然可以选出主节点。
      • 如果当前区域仅有2个可用区,或者ECS库存不充足时,专有主节点会被部署在2个可用区中。当存在1个主节点的可用区出现故障时,集群依然可以选出主节点。当存在2个主节点的可用区出现故障时,需要在控制台上进行切流操作,进行恢复。
    • 所选择的数据节点、冷数据节点以及协调节点个数必须为可用区个数的整数倍。有关可用区的详细信息请参见地域和可用区
  • 索引副本
    • 在跨2个可用区的部署中,当其中一个可用区为不可用时,剩下的可用区需要继续提供服务,因此索引的副本个数至少为1。
      说明 由于ES默认的主分片数为5个,副本数为1个,因此如果您对读性能没有特殊要求,可以直接使用默认值。
    • 在跨3个可用区部署中,当其中一个可用区或两个可用区不可用时,剩下的可用区需要继续提供服务,因此索引的副本个数至少为2。
      说明 由于ES默认的主分片数为5个,副本数为1个,因此需要您通过修改索引模板调整索引默认的副本个数,详情请参见索引模板
  • 切流和恢复
    • 当某个可用区出现故障时,可以在阿里云ES控制台上进行切流操作。为了保证切流后,集群读写操作正常,强烈建议索引是有副本的。被切流的可用区状态会从在线状态变为下线状态。切流操作会将来自客户端的流量只切到剩余的在线状态的可用区中,被切流可用区中的节点也会从集群中隔离。同时,会在剩余的在线状态可用区中自动补充相应的专有主节点、协调节点、数据节点等,以保证索引的正常读写,以及充足的计算资源。详情请参见切流
    • 当某个可用区故障已经恢复时,可以在阿里云ES控制台上进行恢复操作。被恢复的可用区状态会从下线状态变为在线状态。恢复操作会将来自客户端的流量切到所有处于可用状态的可用区中,被恢复可用区中的节点也将重新加入到集群。同时,会将切流操作中补充的专有主节点、协调节点以及数据节点等移除。移除的过程中,会保证被移除的数据节点中的数据迁移到其他数据节点中。详情请参见恢复