规划集群可用区与高可用性
介绍如何通过多可用区部署提高集群的高可用性,包括节点在不同可用区的分布规则、副本数量配置建议,以及应对可用区故障的策略。
可用区(Availability Zone,AZ)指在同一区域(Region)下,电力、网络隔离的物理区域。同一地域内的可用区之间通过内网互通,但彼此在物理层面保持隔离,以降低单点故障风险。
多可用区部署是CSS服务提供的高可用性解决方案。通过在同一个地域内选择2个或3个不同的可用区部署集群,可有效防止数据丢失并降低服务中断风险。
多可用区部署建议
创建集群时,如果选择多可用区部署,CSS服务会自动启用跨AZ高可用特性,确保节点在所选可用区中均匀分布(各AZ的节点数量差异不超过1)。
多可用区部署时,建议优先选择3个可用区,而非2个可用区。当仅选择2个可用区时,如果其中一个可用区发生故障,可能导致无法选举Master节点,从而引发集群不可用风险。
节点分配规则
AZ数量和节点分布情况请参见表1,任意类型的节点都会被均匀的分布在不同的AZ上,最多支持配置3个可用区。

- 在创建集群时,选择的任意类型的节点数需大于或等于所选AZ数,否则跨可用区部署会失败。
- 当集群中数据节点数或冷数据节点数和可用区数不是整数倍关系时,集群的数据分布可能会不均匀,从而影响数据查询或写入业务。
副本配置建议
在多可用区部署中,建议合理配置副本数,以便更高效地利用跨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恢复业务。
可用区数量 |
Master节点数量 |
业务中断行为及应对建议 |
---|---|---|
2 |
0(此时由数据节点和冷数据节点来承担Master节点的功能) |
|
2 |
3 |
有50%机会的停机时间。当两个Master节点分配到一个AZ,一个Master节点分配到另一个AZ时:
|
3 |
0(此时由数据节点和冷数据节点来承担Master节点的功能) |
一般不会出现业务中断时间。但是,当选择3个AZ,数据节点数和冷数据节点数之和为4时,三个AZ的节点分布数为2、1、1,如果节点个数为2的AZ故障,那么业务会中断,建议您选择三个AZ时避免选择4个节点。 |
3 |
3 |
单AZ故障时,无业务中断时间。 |