3½ 个 9 (99.95%),故障恢复时间介于 5 到 30 分钟 - 可靠性支柱

3½ 个 9 (99.95%),故障恢复时间介于 5 到 30 分钟

应用程序的这种可用性目标要求停机时间极短,且特定时间内的数据丢失极少。具有此可用性目标的应用程序涉及以下领域:银行、投资、紧急服务和数据捕获。这些应用程序要求非常短的恢复时间和恢复点。

通过使用 热备用 方法(跨两个 AWS 区域),我们可以进一步缩短恢复时间。我们将整个工作负载同时部署到两个区域,缩减我们的被动站点并且使所有数据保持最终一致性。两个部署在其对应的区域内均 静态稳定 。应用程序应采用分布式系统弹性模式进行构建。我们将需要创建轻量级 路由 组件监控工作负载的运行状况,并且可在必要时配置为将流量路由到被动区域。

监控资源

每次更换 Web 服务器时、数据库故障转移时以及区域出现故障时,系统都会发出提醒。我们还将监控 Amazon S3 上的静态内容以了解可用性,并在其不可用时发出提醒。日志记录将被汇总,以便于管理并帮助在每个区域进行根本原因分析。

路由组件会监控我们的应用程序运行状况,以及我们所拥有的任何区域硬依赖关系。

适应需求的变化

与 4 个 9 场景相同。

实施变更

按每两到四周一次的固定日程安排交付新软件。软件更新将使用金丝雀部署或蓝/绿部署模式自动完成。

发生区域故障转移时、这些事件期间发生常见客户问题时,以及需要常规报告时,可以参考运行手册。

我们将提供行动手册,其中提供了常见数据库问题、安全相关事件、部署失败、区域故障转移的意外客户问题,以及确定问题根本原因的相关解决方案。在确定根本原因之后,运营和开发团队会共同确定错误修正方案,并在开发出解决方案后进行部署。

我们还将与 AWS Support 一起提供基础设施事件管理。

备份数据

类似于 4 个 9 场景,我们使用自动 RDS 备份并使用 S3 版本控制。数据会自动并异步从主动区域的 Aurora RDS 集群被复制到被动区域的跨区域只读副本。S3 跨区域副本被用于自动并异步将数据从主动区域移动到被动区域。

构建弹性

与 4 个 9 场景相同,而且区域故障转移也是有可能的。它采用手动管理。在故障转移期间,我们将使用 DNS 故障转移将请求路由到静态网站,直到在第二个区域中恢复。

测试弹性

与 4 个 9 场景相同,我们将使用运行手册,并且通过实际试用验证架构。另外,对于立即实施与部署,RCA 更正优先于功能发布

灾难恢复 (DR) 计划

手动管理区域故障转移。所有数据都会被异步复制。扩展 热备用 内的基础设施。可通过在 AWS Step Functions 上执行的工作流对其进行自动化。AWS Systems Manager (SSM) 也可在您创建 SSM 文档更新 Auto Scaling 组并调整实例大小时帮助其自动化。

可用性设计目标

假设有一些故障必须要手动决定执行恢复,尽管有自动化选项。假定每年只有两个事件需要做这种决定,我们需要 20 分钟决定执行恢复,并在 10 分钟内完成恢复。这就意味着要从故障中恢复,大约需要 30 分钟的时间。假设一年发生两次故障,预计每年受影响的时间为 60 分钟,

这意味着可用性上限是 99.95%。实际可用性还将取决于实际故障率、故障持续时间以及每个因素的实际恢复速度。对于这种架构,我们假设应用程序通过更新持续在线。基于此,我们的 可用性设计目标 为 99.95%。

总结

主题 实施
监控资源 对所有层和 KPI 执行运行状况检查,包括 AWS 区域级别的 DNS 运行状况;在配置的警报被触发时发出提醒;提醒发生故障。运营会议将密切探讨趋势,并设法达成设计目标。
适应需求的变化 适用于 Web 和自动扩展应用程序层的 ELB;在主动和被动区域内的多个区域为 Aurora RDS 自动扩展存储与只读副本。在 AWS 区域之间同步数据和基础设施以获得静态稳定性。
实施变更 自动金丝雀或蓝绿部署,并在 KPI 或提醒表明应用程序中有未检测到的问题时自动回滚,每次在一个 AWS 区域内部署到一个隔离的区域。
备份数据 在每个 AWS 区域内通过 RDS 自动备份以满足 RPO 和在实际试用期间定期演练的自动还原要求。Aurora RDS 和 S3 数据会从主动区域被自动并异步复制到被动区域。
构建弹性 自动扩展以提供自我修复的 Web 和应用程序层;RDS 为多可用区;在故障转移时,若出现静态站点,则手动管理区域故障转移。
测试弹性 管道内有组件和隔离区域故障测试,并由运营人员在实际试用期间定期演练;存在行动手册以用于诊断未知问题;还有根本原因分析流程,以及用于传达问题出在哪里和如何加以更正或预防的通信路径。对于立即实施与部署,RCA 更正优先于功能发布。
灾难恢复 (DR) 计划 将热备用部署到其他区域。使用通过 AWS Step Functions 或 AWS Systems Manager 文档执行的工作流扩展基础设施。通过 RDS 加密备份。两个 AWS 区域之间的跨区域只读副本。在 Amazon S3 中跨区域复制静态资产。还原到最新的主动 AWS 区域,在实际试用期间演练,并与 AWS 协调。