更新时间:2025-07-29 GMT+08:00

规划集群可用区与高可用性

介绍如何通过多可用区部署提高集群的高可用性,包括节点在不同可用区的分布规则、副本数量配置建议,以及应对可用区故障的策略。

可用区(Availability Zone,AZ)指在同一区域(Region)下,电力、网络隔离的物理区域。同一地域内的可用区之间通过内网互通,但彼此在物理层面保持隔离,以降低单点故障风险。

多可用区部署是CSS服务提供的高可用性解决方案。通过在同一个地域内选择2个或3个不同的可用区部署集群,可有效防止数据丢失并降低服务中断风险。

多可用区部署建议

创建集群时,如果选择多可用区部署,CSS服务会自动启用跨AZ高可用特性,确保节点在所选可用区中均匀分布(各AZ的节点数量差异不超过1)。

多可用区部署时,建议优先选择3个可用区,而非2个可用区。当仅选择2个可用区时,如果其中一个可用区发生故障,可能导致无法选举Master节点,从而引发集群不可用风险。

节点分配规则

AZ数量和节点分布情况请参见表1,任意类型的节点都会被均匀的分布在不同的AZ上,最多支持配置3个可用区。

  • 在创建集群时,选择的任意类型的节点数需大于或等于所选AZ数,否则跨可用区部署会失败。
  • 当集群中数据节点数或冷数据节点数和可用区数不是整数倍关系时,集群的数据分布可能会不均匀,从而影响数据查询或写入业务。
表1 节点数量和AZ分布

节点个数

单AZ

两AZ

三AZ

AZ1

AZ1

AZ2

AZ1

AZ2

AZ3

1个节点

1

不支持

不支持

2个节点

2

1

1

不支持

3个节点

3

2

1

1

1

1

4个节点

4

2

2

2

1

1

副本配置建议

在多可用区部署中,建议合理配置副本数,以便更高效地利用跨AZ高可用特性。

  • 双AZ部署时,当一个AZ不可用时,为保证另一个AZ可以继续提供服务,索引的副本数至少配置为1当集群对查询性能有更高要求时,也可以增加副本数。
  • 三AZ部署时,为了保证其中任意一个AZ不可用时,剩余的AZ可以继续提供服务,索引的副本数至少配置为1个。为了提高集群的查询能力,也可以增加副本数。

Elasticsearch和OpenSearch默认索引副本数为1,当需要增加副本数时,可以修改setting配置,下面提供了修改副本数示例。

  • 已有索引调整副本数:

    curl -XPUT http://ip:9200/{index_name}/_settings -d '{"number_of_replicas":2}'

  • 新建索引可以通过模板设置副本数:

    curl -XPUT http://ip:9200/_template/templatename -d '{ "template": "*", "settings": {"number_of_replicas": 2}}'

其中,“ip”表示集群内网访问地址,“index_name”表示索引名称,“templatename”是模板名称,“template”是索引名称的匹配规则(即满足这个规则的索引会自动使用模板配置,此处*表示全部新建索引都生效),“number_of_replicas”表示修改后的索引副本个数,此处以修改为2个索引副本为例。

业务故障行为分析

Master节点负责管理集群中所有节点任务,如集群元数据、索引及分片分配。在有Master节点的集群中,由Master节点承担这些功能;在没有Master节点的集群中,数据节点和冷数据节点会协同承担Master节点的职责。

当某个AZ故障时,如果在无故障的AZ中,承担Master节点功能的节点数小于或等于全部承担Master节点功能的节点数的一半,则业务会受影响,需要参考表2执行业务恢复操作。

例如,集群有3个Master节点,分布在2个AZ中。当有1个Master节点的AZ故障时,另一个AZ可以正常工作,业务不会中断。但是,当有2个Master节点的AZ故障时,另一个AZ中的Master节点无法满足“节点数大于总节点数的一半”,业务将中断,需要参考表2恢复业务。

表2 AZ故障的业务故障行为分析

可用区数量

Master节点数量

业务中断行为及应对建议

2

0(此时由数据节点和冷数据节点来承担Master节点的功能)

  • 如果数据节点数和冷数据节点数之和为2的倍数:

    故障AZ导致一半的节点故障,需要正常AZ通过扩容增加一个节点,集群才能继续选择主节点。如需操作请联系技术支持处理。

  • 如果数据节点数和冷数据节点数之和为奇数:
    • 故障AZ含多一个节点,需要正常AZ通过扩容增加两个节点,集群才能继续选择主节点。如需操作请联系技术支持处理。
    • 故障AZ含少一个节点,不中断业务,能够继续选择主节点。

2

3

有50%机会的停机时间。当两个Master节点分配到一个AZ,一个Master节点分配到另一个AZ时:

  • 如果只有1个Master节点的AZ故障,则另一个AZ具有两个Master节点,这两个Master节点可以选择出主节点。
  • 如果有2个Master节点的AZ故障,则另一个AZ只有1个Master节点,无法选择出主节点,业务中断,需要联系技术支持处理。

3

0(此时由数据节点和冷数据节点来承担Master节点的功能)

一般不会出现业务中断时间。但是,当选择3个AZ,数据节点数和冷数据节点数之和为4时,三个AZ的节点分布数为2、1、1,如果节点个数为2的AZ故障,那么业务会中断,建议您选择三个AZ时避免选择4个节点。

3

3

单AZ故障时,无业务中断时间。