跨可用区部署可提升集群的容灾能力,系统会自动选择库存充足的可用区创建集群。在索引配置了副本的情况下,当某一可用区出现故障时,剩余的可用区依然可以不间断地提供服务,显著增强了集群的可用性。同时,您可以通过控制台的切流操作,将出现故障的可用区隔离,这时系统会自动在剩余的可用区中补充计算资源,满足业务对资源的需求。本文介绍如何部署和使用(切流和恢复)跨可用区实例。
应用场景
跨可用区部署支持单可用区、跨2个可用区、跨3个可用区三种部署方式,各部署方式的适用场景如下:
单可用区:普通部署模式,适用于非关键任务型的工作(默认)。
跨2个可用区:跨可用区容灾部署模式,适用于生产型的工作。
跨3个可用区:高可用部署模式,适用于具有更高可用性要求的生产型的工作。
部署
部署操作
在购买阿里云Elasticsearch实例时,您可以选择可用区数量。当选择两个或三个可用区时,系统将部署跨可用区的Elasticsearch实例。部署时,系统会自动配置对应个数的可用区,无需手动选择。详细信息,请参见创建阿里云Elasticsearch实例和ES实例节点配置说明。
如果选择多可用区,您所选的以及控制台上显示的是集群流量入口所在的可用区(例如杭州可用区I)。实际部署时,系统会在所选规格机器库存充足的可用区(例如杭州可用区H和杭州可用区J)部署实例。
注意事项
类别 | 注意事项 |
节点 |
|
索引副本 |
说明 如果实例内存在0副本索引,使用切流和恢复功能可能存在数据丢失风险。请确认实例内索引已按照上述建议配置完毕,并在日常使用中做好运维排查。 |
配置说明
部署时,系统会自动为跨可用区实例配置与分片分配策略相关的集群配置。详细信息,请参见Shard allocation awareness。例如,跨可用区实例部署在可用区cn-hangzhou-f和cn-hangzhou-g,则集群配置相关的参数说明如下。
参数 | 说明 | 示例值 |
cluster.routing.allocation.awareness.attributes | 重要 不要通过API修改此参数值,否则会引起异常。 用于告知Elasticsearch,使用哪些节点属性设置分片的分配策略。跨可用区实例通过在节点的启动参数中加入Enode.attr.zone_id,来标识节点的可用区(例如某个节点部署在cn-hangzhou-g可用区,则在该节点的启动参数中加入 | zone_id |
cluster.routing.allocation.awareness.force.zone_id.values | 用于告知Elasticsearch,在跨可用区部署时,强制均分shard。假设索引中包含了1个主分片,3个副本分片,并且部署在cn-hangzhou-f和cn-hangzhou-g两个可用区。按照分片分配策略,系统会在cn-hangzhou-f分配两个分片,在cn-hangzhou-g分配两个分片。如果指定了cluster.routing.allocation.awareness.force.zone_id.values参数,当cn-hangzhou-f不可用时,该可用区的两个分片不会自动迁移到cn-hangzhou-g。 说明 该参数值支持修改,默认配置为不会自动迁移。 | ["cn-hangzhou-f", "cn-hangzhou-g"] |
使用(切流与恢复)
跨可用区实例部署完成后,如果发现实例中某一可用区中的节点出现问题,可通过切流操作,将来自客户端的流量只传输到剩余的在线状态的可用区中,并从集群中隔离被切流可用区中的节点。当被切流的可用区恢复正常后,可通过恢复操作,将来自客户端的流量传输到所有正常状态的可用区中,并在集群中重新加入被恢复的可用区中的节点。
为了保证切流后集群读写操作正常,切流前,需要确保集群中的索引是有副本的。
- 登录阿里云Elasticsearch控制台。
- 在左侧导航栏,单击Elasticsearch实例。
- 进入目标实例。
- 在顶部菜单栏处,选择资源组和地域。
- 在Elasticsearch实例中单击目标实例ID。
在基本信息页面底部的节点可视化页签中,完成切流操作。
将鼠标移动到需要切流的可用区上,单击切流。
在操作提示对话框中,单击确认。
确认后集群会重启,重启成功即可完成切流操作。 切流成功后,被切流的可用区状态会从在线状态变为下线状态。
说明切流时阿里云Elasticsearch会尝试为其他在线状态的可用区补充相应数量的专有主节点、协调节点、数据节点等,尽可能保证集群内的计算资源。但受底层资源库存、调度并发度限制等多种因素影响,资源补足能力暂时无法保证成功率。
切流后计算资源减少,集群可承受的最大负载也会相应减少。为减少故障对于集群的影响,请在日常使用时做好集群水位控制,并在故障期间及时配合业务限流等操作。
如果切流前,索引是有副本的,而切流后集群健康状态为非正常(黄色)。那么当确认完成切流后,您可以登录Kibana控制台,参考以下命令设置集群参数,使得被切流可用区中的分片分配到剩余的可用区中。分片分配完成后,集群的健康状态就会变为正常(绿色)。
PUT /_cluster/settings { "persistent" : { "cluster.routing.allocation.awareness.force.zone_id.values" : {"0": null, "1": null, "2": null} } }
在节点可视化页签中,恢复被切流的可用区中的节点。
将鼠标移动到需要恢复的可用区上,单击恢复。
在操作提示对话框中,单击确认。