规划集群可用区与高可用性
介绍如何通过多可用区部署提高集群的高可用性,包括节点在不同可用区的分布规则、副本数量配置建议,以及应对可用区故障的策略。
可用区(Availability Zone,AZ)指在同一区域(Region)下,电力、网络隔离的物理区域。同一地域内的可用区之间通过内网互通,但彼此在物理层面保持隔离,以降低单点故障风险。
多可用区部署是CSS服务提供的高可用性解决方案。通过在同一个地域内选择2个或3个不同的可用区部署集群,可有效防止数据丢失并降低服务中断风险。
多可用区部署建议
创建集群时,如果选择多可用区部署,CSS服务会自动启用跨AZ高可用特性,确保节点在所选可用区中均匀分布(各AZ的节点数量差异不超过1)。
多可用区部署时,建议优先选择3个可用区,而非2个可用区。当仅选择2个可用区时,如果其中一个可用区发生故障,可能导致无法选举Master节点,从而引发集群不可用风险。
节点分配规则
表1、表2和表3分别展示了数据节点、冷数据节点、Master节点和Client节点的AZ数量与节点的分布情况。多可用区部署的节点分配规则:
- 多可用区部署时,系统会自动将节点均匀分布在多个可用区,同一类型的节点在不同可用区间的数量差值不超过1。
- 为保障服务高可用性并避免单节点负载过高,多可用区部署需满足以下节点数量要求:
- 双可用区部署:数据节点/冷数据节点数量≥4,确保每个可用区至少具备2个节点;Client节点数量≥2,确保每个可用区至少具备1个节点。
- 三可用区部署:所有节点类型的节点数量分别≥3,确保每个可用区至少具备1个节点。
- 如果某类型的节点未部署(如无冷数据节点),则不受最小节点数量约束。
- 当数据节点或冷数据节点数量与可用区数量不是整数倍时(如,2个可用区共配置5个数据节点),可能出现数据分布不均,影响集群的查询或写入性能。建议规划时确保节点数量为可用区数量的整数倍。
| 节点总数 | 单可用区 | 双可用区 | 三可用区 | |||
|---|---|---|---|---|---|---|
| AZ1 | AZ1 | AZ2 | AZ1 | AZ2 | AZ3 | |
| 1个节点 | 1 | 不支持 | 不支持 | |||
| 2个节点 | 2 | 不支持 | 不支持 | |||
| 3个节点 | 3 | 不支持 | 1 | 1 | 1 | |
| 4个节点 | 4 | 2 | 2 | 2 | 1 | 1 |
| 5个节点 | 5 | 3 | 2 | 2 | 2 | 1 |
| 6个节点 | 6 | 3 | 3 | 2 | 2 | 2 |
| 7个节点 | 7 | 4 | 3 | 3 | 2 | 2 |
| … | … | … | … | … | … | … |
副本配置建议
在多可用区部署中,建议合理配置副本数,以便更高效地利用跨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节点功能的节点数的一半,则业务会受影响,需要参考表4执行业务恢复操作。
例如,集群有3个Master节点,分布在2个AZ中。当有1个Master节点的AZ故障时,另一个AZ可以正常工作,业务不会中断。但是,当有2个Master节点的AZ故障时,另一个AZ中的Master节点无法满足“节点数大于总节点数的一半”,业务将中断,需要参考表4恢复业务。
| 可用区数量 | 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故障时,无业务中断时间。 |