当业务对可用性要求较高时,单可用区部署可能因物理数据中心故障而中断。跨可用区部署可将一个Elasticsearch实例的节点分散部署在同一地域的多个物理隔离的可用区(数据中心)中,实现数据中心级别的容灾。当某个可用区发生故障时,集群凭借在其他可用区的节点和数据副本,仍可提供服务,保障业务连续性。
工作原理
跨可用区部署利用Elasticsearch内置的分片分配感知(Shard Allocation Awareness)机制。
创建跨可用区实例时,系统会自动为部署在不同可用区的节点添加名为zone_id的属性。同时,集群会配置cluster.routing.allocation.awareness.attributes: zone_id,告知Elasticsearch在分配分片时考虑此节点属性。
该机制确保索引的主分片和副本分片分散到不同可用区,当某个可用区整体不可用时,该可用区的所有分片副本都在其他可用区存有备份,保证数据冗余和服务可用性。
部署模式选择
根据业务的可用性要求和成本预算,选择合适的部署模式。
部署模式 | 架构特点 | 容灾能力 | 推荐场景 |
单可用区 | 所有节点位于同一个可用区。 | 可用区故障将导致服务完全中断。 | 开发、测试等非关键业务。 |
跨2个可用区 | 节点分布在两个可用区。 | 单个可用区故障时,服务可持续。 | 对可用性有较高要求的生产环境。 |
跨3个可用区 | 节点分布在三个可用区。 | 单个可用区故障时,服务仍可持续。 | 对可用性要求高的核心生产业务。 |
创建跨可用区实例
访问创建阿里云Elasticsearch实例页面。
在可用区数量配置项中,选择两个可用区或三个可用区。
节点数量约束:数据节点、冷数据节点或协调节点的数量必须是所选可用区数量的整数倍,以确保节点均匀分配。
专有主节点:为保证多可用区架构的稳定性,必须购买3个专有主节点。
在控制台选择的可用区(例如可用区 A)将作为集群的主要访问入口。系统会根据各可用区的实时资源情况,将节点自动、均匀地部署到所选数量的可用区中(例如,若选择两个可用区,则可能部署在可用区 A 和 B)。
单可用区升级为多可用区(仅适用于V3部署架构集群)
升级前,确认以下条件:
执行
GET _cluster/health确保集群为状态为GREEN。如遇集群状态不健康,请参照集群变更报错-集群状态不健康进行解决。优化客户端连接分布,避免长连接集中在某个单可用区,导致高负载区节点资源耗尽、低负载区节点闲置。可通过设置连接有效时长、 分批重启客户端、使用单独的协调节点等方案优化连接分布,请参见集群负载不均问题的分析方法及解决方案。
执行
GET _cluster/settings确认结果为"cluster.routing.allocation.enable": "all",(即允许ES自动分配分片)。若结果不一致,执行以下命令强制开启分片自动分配。PUT _cluster/settings { "transient": { "cluster.routing.allocation.enable": "all" } }
在实例列表,单击升配。

更多操作入口:在基本信息页面,单击
在变配页面的可用区数量区域,选择两个可用区或三个可用区,并完成支付。
升级过程中,系统会自动启用专有主节点(若尚未启用),并可能根据可用区数量增加数据节点,以满足节点均匀分布的要求。同时因新增节点(为满足节点数均分或启用的专有主节点),将增加相应费用,具体以账单为准。
例如,一个有2个数据节点的单可用区实例升级为3可用区时,系统会自动补充1个数据节点,使总数达到3个,确保每个可用区分配1个。
迁移可用区
当需要对集群进行升配但当前可用区资源不足时,可将节点迁移至资源充足的新可用区后再进行升配。
迁移可用区会触发集群重启,重启过程中集群可持续提供服务,但可能导致服务不稳定,建议在业务低峰期操作。
迁移前,确认以下条件:
执行
GET _cluster/health确保集群为状态为GREEN。如遇集群状态不健康,请参照集群变更报错-集群状态不健康进行解决。执行
GET /_cat/indices?v检查是否存在状态为CLOSE的索引。如果存在,需执行POST /<index_name>/_open临时打开这些索引,否则升级操作可能失败。存在CLOSE状态的索引时,集群状态无法达到GREEN。执行
GET _cluster/settings确认结果为"cluster.routing.allocation.enable": "all",(即允许ES自动分配分片)。若结果不一致,执行以下命令强制开启分片自动分配。PUT _cluster/settings { "transient": { "cluster.routing.allocation.enable": "all" } }
执行迁移操作:
进入目标实例的基本信息页面,在节点可视化区域,将鼠标悬停在待迁移的可用区上,单击迁移。

在弹出的对话框中,选择目标可用区和虚拟交换机。每次仅支持迁移单个可用区。

勾选数据迁移服务协议,单击确认。
确认后,集群将重启,期间集群性能可能出现短暂波动。迁移过程中,系统将先在目标可用区购买新 Master节点,出现新旧可用区暂时共存。
迁移完成后,集群即恢复正常,但控制台(实例信息/升降配页面)可能因更新延迟仍显示旧可用区,此显示不影响新可用区下集群使用,请注意节点 IP 会变更。
执行可用区故障切换(切流与恢复)
当监控到可用区故障时,通过切流将客户端流量切换到剩余可用区,待可用区恢复后,通过恢复操作将其重新纳入集群。
切流(隔离故障可用区)
在实例的节点可视化区域,将鼠标悬停在待隔离的可用区上,单击切流。

在弹出的对话框中,单击确认。
重要可用区切流将隔离集群中位于被切流可用区的所有节点,切流后业务请求仅由剩余可用区的节点承担。系统会尝试为您在剩余可用区补充相应数量的资源,但受底层资源库存、调度并发度限制等多种因素影响,资源补足能力无法保证成功率,建议您结合集群负载情况及时进行业务限流等操作。
如果切流前索引已配置副本,但切流完成后,集群状态显示为黄色(非健康状态),可通过Kibana连接集群执行以下命令临时覆盖分片分配策略(强制将被切流可用区的分片重新分配到剩余可用区):
PUT /_cluster/settings { "persistent" : { "cluster.routing.allocation.awareness.force.zone_id.values" : {"0": null, "1": null, "2": null} } }分片分配完成后,集群的健康状态将恢复为正常(绿色)。
恢复(重新纳入可用区)
确认故障可用区恢复正常后,在实例的节点可视化区域,将鼠标悬停在已下线的可用区上,单击恢复。
在弹出的对话框中,单击确认,集群将重启。恢复后,切流过程中临时补充的节点将被移除,集群架构复原。