案例中心

在启用备用域的 Amazon OpenSearch 多可用区中实现高可用性:故障转移的深入分析 大数

2026-01-27 13:40:03
26次

在Amazon OpenSearch MultiAZ中实现高可用性及备用域的深入分析

关键要点

Amazon OpenSearch 服务引入了 MultiAZ 备用部署选项,旨在为关键工作负载提供增强的可用性和一致的性能。该功能可以使托管的集群实现9999的可用性,确保即使在区域基础设施故障情况下也能保持正常运行。本文将探讨在 MultiAZ 的运行机制、故障转移流程以及如何保障高可用性。

Amazon OpenSearch 服务最近推出了 MultiAZ 备用,这一部署选项被设计为帮助企业在关键工作负载上实现更高的可用性和一致的性能。借助此功能,管理集群在面临区域故障时能够达到9999的可用性。

在此文中,我们将深入探讨 MultiAZ 备用的搜索和索引工作机制,以及构成其可靠性、简单性和容错能力的底层机制。

背景

MultiAZ 备用会在三个可用区中部署 OpenSearch 服务域实例,其中两个区域被指定为活动,另一个则为备用。这种配置能够确保在区域故障事件发生时,保持所有区域相同的容量,从而始终保持一致的性能。更重要的是,这个备用区域采用了 静态稳定设计,在发生故障时无需进行容量预置或数据迁移。

在正常操作过程中,活动区域处理读写请求的协调流量以及分片查询流量,而备用区域仅接收复制流量。OpenSearch 服务使用同步复制协议处理写请求,使得在故障发生预计故障时间不超过1分钟时,能够迅速提升备用区域为活动状态,这种故障切换称为区域故障转移。之前的活动区域将被降级为备用状态,恢复操作随之开始以恢复其正常状态。

搜索流量路由和故障转移保证高可用性

在 OpenSearch 服务领域,协调器是处理 HTTP(S) 请求的任何节点,尤其是索引和搜索请求。在 MultiAZ 备用域中,活动区域的数据节点充当搜索请求的协调器。

在搜索请求的查询阶段,协调器确定要查询的分片,并向托管分片副本的数据节点发送请求。查询在每个分片上本地执行,并将匹配的文档返回给协调器节点。负责向托管分片副本的节点发送请求的协调器节点,分两步进行此过程。首先,它创建一个迭代器,以定义需要查询节点的顺序,从而确保流量均匀分布到各个分片副本上。随后,相关请求被发送到指定节点。

为了创建一个查询分片副本的节点的有序列表,协调器节点使用各种算法。这些算法包括轮询选择、自适应副本选择、优先级分片路由,以及 加权轮询。

对于 MultiAZ 备用,使用加权轮询算法进行分片副本选择。在这种方法中,活动区域的权重设为1,而备用区域的权重设为0。确保没有读取流量被发送到备用可用区中的数据节点。

权重以 JSON 对象的形式存储在集群状态元数据中:

一元机场网线

jsonweightedshardrouting { awareness { zone { useast1b 0 useast1d 1 useast1c 1 } } version 3}

如下图所示,useast1b 区域的状态为 StandBy,这表明该可用区中的数据节点处于备用状态,不会接收负载均衡器的搜索或索引请求。

为了维持稳定状态操作,备用可用区每30分钟轮换,确保所有网络部分在可用区中都有所覆盖。这种主动的方法验证了读取路径的可用性,进一步增强了系统在潜在故障中的弹性。下图展示了这一架构。

在上图中,区C 的加权轮询权重设置为零。这确保备用区域中的数据节点不接收任何索引或搜索流量。当协调器查询数据节点以获取分片副本时,它使用加权轮询权重来决定查询节点的顺序。由于备用可用区的权重为零,因此不会发送协调器请求。

在 OpenSearch 服务集群中,可以随时使用可用区轮换指标检查活动和备用区域,如下图所示。

在区域故障期间,备用可用区会无缝切换为搜索请求的故障开放模式。这意味着当活动可用区中没有健康的分片副本时,分片查询流量会被路由到所有的可用区,包括那些处于备用状态的可用区。此故障开放方法保护了搜索请求,在故障发生时确保服务的连续性。下图展示了这一架构。

在前面的图中,在稳态期间,分片查询流量被发送到活动可用区 (区A 和区B) 中的数据节点。由于区A 中的节点故障,备用可用区 (区C) 开放以接受分片查询流量,以确保搜索请求不受影响。最终,区A 被确定为不健康,读取故障转移切换了备用到区A。

故障转移如何在写入受损期间确保高可用性

OpenSearch 服务的复制模型遵循主要备份模型,其特征在于同步性质,要求在确认写请求之前,所有分片副本必须先进行确认。这种复制模型的一个显著缺点是,在写入路径出现任何受损情况时,容易发生减速。这些系统依赖于活动的领导节点识别故障或延迟,并随后将此信息广播给所有节点。检测这些问题所需的时间平均检测时间以及随后解决这些问题的时间平均修复时间在很大程度上决定了系统将在受损状态下运行的时间。此外,任何影响区域间通信的网络事件可能会显著妨碍写请求,这是由于复制的同步性质。

OpenSearch 服务利用内部节点间通信协议来复制写流量并通过选举出的领导者协调元数据更新。因此,将承受压力的区域放置为备用并不能有效解决写入受损的问题。

区域写入故障转移:切断区域间复制流量

对于 MultiAZ 备用,为了降低在区域故障和网络事件等意外情况下可能引起的性能问题,区域写入故障转移是一种有效的方式。此方法涉及在受影响区域中优雅地移除节点,从而切断区域间的流入和流出流量。通过切断区域间的复制流量,区域故障的影响可以控制在受影响区域内。这为客户提供了更可预测的体验,并确保系统持续可靠地运行。

优雅的写入故障转移

OpenSearch 服务中的写入故障转移由选举出的领导节点通过一套明确的机制进行协调。此机制涉及集群状态发布的一致性协议,确保所有节点对指定单一区域持续保证达成共识,准备进行退役。值得注意的是,关于受影响区域的元数据会在所有节点之间进行复制,以确保在故障时的持久性。

此外,领导节点确保通过在启用 I/O 隔离之前,将受影响区域的节点初步放置为备用,持续 5分钟,确保不再有新的协调流量或分片查询流量被导向该受影响区域的节点。这种细致的做法确保了这些节点能够优雅地完成当前任务,并逐步处理任何在处理中的请求,然后再从服务中移除。下图展示了这一架构。

在实现领导节点的写入故障转移过程中,OpenSearch 服务遵循以下关键步骤:

领导权放弃 如果领导节点恰好位于计划进行写入故障转移的区域,系统会确保领导节点自愿下台,放弃其领导角色。这个过程在控制下进行,整个过程会交接给另一个符合条件的节点,由其承担所需的操作。防止被退役领导的重新选举 为了防止被退役的领导节点再次参与选举,在符合条件的领导节点启动写入故障转移操作时,采取措施确保任何被退役的领导节点不参与接下来的选举。这是通过将被退役的领导节点排除在投票配置之外实现的,有效阻止其在集群运行的关键阶段参与投票。

与写入故障转移区域相关的元数据存储在集群状态中,并以如下格式发布到分布式 OpenSearch 服务集群中的所有节点:

在启用备用域的 Amazon OpenSearch 多可用区中实现高可用性:故障转移的深入分析 大数

jsondecommissionedAttribute { awareness { zone useast1c } status successful requestID FLoyf5v9RVSsaAquRNKxIw}

以下截图表明,在区域内发生网络减速时,写入故障转移有助于恢复可用性。

写入故障转移后的区域恢复

区域再委任的过程在区域写入故障转移后的恢复阶段中起着关键作用。当受影响的区域恢复并被视为稳定后,之前被退役的节点将重新加入集群。这种再委任通常在区域被恢复后的2分钟内进行。

这使得它们能够与同伴节点同步,并启动副本分片的恢复过程,有效地将集群恢复到其期望状态。

结论

OpenSearch 服务 MultiAZ 备用的引入为企业提供了一种强大解决方案,能够实现高可用性和关键工作负载的一致性能。借助这一部署选项,企业可以增强基础设施的弹性,简化集群的配置和管理,并执行最佳实践。有了像加权轮询分片副本选择、主动故障转移机制以及故障开放备用可用区等特性,OpenSearch 服务 MultiAZ 备用确保在要求严格的企业环境中提供可靠和高效的搜索体验。

欲了解有关 MultiAZ 备用的更多信息,请参考 Amazon OpenSearch 服务内幕:MultiAZ 备用。

本文网址: https://www.qnzmw.com/works/9.html
 Copyright © 一元加速器(中国)官方网站|一元加速器 2024 版权所有 All rights reserved 加速器ios