提高应用程序的弹性,以防止中断和停机
本指南演示了如何使用 AWS 服务(例如 Amazon DynamoDB 全局表)构建弹性多区域应用程序。它阐述了检测和响应区域范围的中断、提供高可用性和最大限度地减少任务关键型应用程序停机时间的最佳实践。本指南通过动态路由受影响区域的流量并利用全局数据复制来帮助您实现应用程序弹性。
请注意:[免责声明]
架构图
-
主要区域
-
跨区域失效转移和失效自动恢复
-
主要区域
-
此架构图显示如何设置和构建弹性多区域应用程序。要进行跨区域失效转移和失效自动恢复,请打开另一个选项卡。
第 1 步
检查金丝雀、组件级指标、区域端点指标、综合指标和 AWS Health API,以识别任何区域范围内的 AWS 服务事件(假设这些事件处于正常运行状态)。第 2 步
用户的应用程序通过 Amazon Route 53 执行 DNS 查找。根据基于延迟的路由策略,Route 53 从延迟最低的区域返回 Amazon API Gateway 端点。在本例中,区域为 us-west-2。第 3 步
用户的应用程序向 us-west-2 中提供的 API Gateway 端点发送请求,例如创建新订单。API Gateway 接收请求并将其传递给 us-west-2 区域中配置的 AWS Lambda 函数。第 4 步
Lambda 函数处理来自 API Gateway 的请求并执行必要的操作。在本例中,它将新产品订单写入 us-west-2 中的本地 Amazon DynamoDB 表。第 5 步
DynamoDB 将数据写入 us-west-2 中的本地表并向 Lambda 函数确认写入成功。Lambda 函数通过 API Gateway 向用户的应用程序返回响应,确认写入成功。
第 6 步
DynamoDB 全局表将数据从 us-west-2 表异步复制到 us-east-1 中的相应表。
-
跨区域失效转移和失效自动恢复
-
此架构图显示了在发生中断时如何执行跨区域失效转移和失效自动恢复。要设置主要区域,请打开另一个选项卡。
第 1 步
区域范围的中断始于 us-west-2,导致该区域内的应用程序出现间歇性故障并延长响应时间。第 2 步
金丝雀、组件级指标、区域端点指标、综合指标和 AWS Health API 等数据来源有助于检测区域范围的 AWS 服务事件中的问题,并随后向您发出告警。第 3 步
在确定 us-west-2 区域发生中断后,清空 us-west-2,直至事件解决。更改 Route 53 应用程序恢复控制器(ARC),以禁用到 us-west-2 的流量路由。如果您担心 DNS 更改传播所需的时间,请考虑在 API 网关级别切断流量。第 4 步
现在,所有流量都将路由到 us-east-1 区域。应用程序应该能够处理增加的流量,前提是事先调整了服务配额。密切监控 us-east-1 区域,确保应用程序正常运行并处理增加的负载。
第 5 步
一旦 us-west-2 中的事件得到解决,就开始恢复该区域的服务。删除所有 API Gateway 限制,更改 Route 53 ARC 路由控制以再次允许流量流向 us-west-2,并使用 Route 53 加权路由策略逐步恢复流量。
第 6 步
继续监控 us-west-2 区域,以确认应用程序的以预期的服务水平运行。
Well-Architected 支柱
当您在云中构建系统时,AWS Well-Architected Framework 可以帮助您了解所做决策的利弊。框架的六大支柱使您能够学习设计和操作可靠、安全、高效、经济高效且可持续的系统的架构最佳实践。使用 AWS 管理控制台中免费提供的 AWS Well-Architected Tool,您可以通过回答每个支柱的一组问题,根据这些最佳实践来检查您的工作负载。
上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。
-
卓越运营
Amazon CloudWatch 通过 DynamoDB、Lambda、API Gateway 和 Route 53 的指标来监控应用程序的运行状况。在事件发生期间,指标有助于评测清空决策的用户影响。CloudWatch Synthetics 金丝雀模拟客户互动,即使在没有流量的情况下也能验证用户体验。金丝雀通过揭示面向客户的问题来补充组件指标。CloudWatch 仪表板为运营人员提供统一的性能视图。Route 53 ARC 检查应用程序的准备情况。失效转移后,仪表板监控失效转移区域。
-
安全性
API Gateway HTTPS 端点加密所有通信。AWS Identity and Access Management(IAM)实施最低权限原则,仅授予服务正常运行所需的权限。DynamoDB 加密静态和传输中的数据,而 CloudWatch 日志也经过加密,保护您的敏感信息。采用这些以安全为重点的 AWS 服务可降低数据泄露风险并增强应用程序的整体安全状况。
-
可靠性
DynamoDB 全局表可跨多个 AWS 区域复制数据。使用 Route 53 路由和 Route 53 ARC 的自动失效转移可帮助您的应用程序在发生中断时无缝继续运行。Lambda 提供可扩展的应用程序层,将您的服务与预配置的计算资源分离。使用 CloudWatch 和 CloudWatch Synthetics 金丝雀进行实时监控可为您的团队提供在关键事件期间做出明智决策所需的信息。这些 AWS 服务可帮助您构建一个强大且高度可用的应用程序,可以承受意外失效。
-
性能效率
完全托管的无服务器 AWS 服务会自动扩展以匹配您的工作负载。DynamoDB、Lambda、API Gateway 和 Route 53 会动态分配资源,使您的应用程序可以处理流量激增和波动,而不会影响用户体验。CloudWatch 会监控应用程序的指标,使您能够识别和解决性能瓶颈。Route 53 会自动将流量分配到延迟最低的区域,从而提高用户的响应能力。
-
成本优化
AWS 服务会自动扩展资源以满足您的应用程序需求。Lambda 和 DynamoDB 仅对您使用的计算和存储资源收费,无需过度配置。API Gateway 和 Lambda 协同工作,仅在收到有效的 API 请求时启动您的应用程序逻辑,因此您只需为使用的资源付费。
-
可持续性
无服务器架构图可优化资源分配,减少对预置硬件的需求并实现高效的能源使用。API Gateway 和 Lambda 仅针对有效请求启动,可以最大限度地减少计算消耗。DynamoDB 根据需要分配存储,可防止浪费。资源在流量高峰和失效转移期间纵向扩展,然后在需求减少时缩减。这种自动、精确的供需匹配可最大限度地提高能源效率并降低能源消耗。
相关内容
免责声明
示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 Amazon EC2 实例或使用 Amazon S3 存储)而产生 AWS 费用。
本指南中提及第三方服务或组织并不意味着 Amazon 或 AWS 与第三方之间存在认可、赞助或从属关系。AWS 的指导是一个技术起点,您可以在部署架构时自定义与第三方服务的集成。