[SEO 副标题]
本指南将演示如何利用本地读取、全局写入方法扩展您的 Web 应用程序或移动应用程序,以构建一个跨越多个 AWS 区域并具有弹性和自我修复能力的系统。在每个区域内,您的应用程序会在 AWS 托管的计算实例上自动扩展,以满足不断变化的需求。代理服务将保持您的数据库连接,并拆分读取和写入,以优化性能。如果一个区域出现故障,系统可以快速切换到备份,利用事件驱动型自动化功能监控问题并同步您的配置。
请注意:[免责声明]
架构图
[架构图描述]
步骤 1
用户通过 AWS Global Accelerator 连接到应用程序,AWS Global Accelerator 通过 AWS 全球网络基础设施发送应用程序流量。
步骤 2
Global Accelerator 将连接路由到最近区域的应用程序负载均衡器。
步骤 3
应用程序负载均衡器将连接路由到 Amazon Elastic Kubernetes Service(Amazon EKS)上的应用程序容器组(Pod)。
步骤 4
在同一个 Amazon EKS 集群上设置 PgBouncer 代理容器组(Pod),以使用 Horizontal Pod Autoscaler 进行自动扩展。
步骤 5
使用 PgBouncer 代理保持一组与 Amazon Aurora Global Database 之间的连接。将连接划分为写入器池和读取器池。写入器池连接到主区域中的 Amazon Aurora 写入器节点。读取器池连接到 Amazon EKS 所在区域中的 Aurora 读取器节点。
步骤 6
当 Aurora Global Database 切换到或失效转移到辅助区域时,在 Amazon EventBridge 事件总线上生成一个事件。
步骤 7
利用事件规则,运行一个 AWS Lambda 函数,以进行 Aurora Global Database 切换和失效转移。
步骤 8
利用 Lambda,同步用于 Aurora Global Database 主区域中的写入器节点的 PgBouncer 代理配置。
开始使用
Well-Architected 支柱
当您在云中构建系统时,AWS Well-Architected Framework 可以帮助您了解所做决策的利弊。框架的六大支柱使您能够学习设计和操作可靠、安全、高效、经济高效且可持续的系统的架构最佳实践。使用 AWS 管理控制台中免费提供的 AWS Well-Architected Tool,您可以通过回答每个支柱的一组问题,根据这些最佳实践来检查您的工作负载。
上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。
-
卓越运营
多区域环境中的卓越运营要求确保您的基础设施在不同的区域之间平稳地运行。Amazon CloudWatch 用来监控各个方面,包括 Aurora Global Database、Amazon EKS 集群(例如 CPU 和内存使用情况)以及通过应用程序负载均衡器路由的传入请求的性能。可以通过 Aurora 内部的性能洞察进一步观察数据库性能。此外,当配置这种方法时,强调通过 Amazon EKS、应用程序负载均衡器、Aurora Global Database 和 Global Accelerator 之间的协作隔离各个分区中的故障。这一合作增强了可扩展性和弹性,特别是在缓解罕见但有可能发生的可用区(AZ)或区域故障方面。
-
安全性
本指南利用各种 AWS 服务来保护资源和数据。Amazon EKS 利用 Kubernetes 的基于角色的访问控制(RBAC)来管理对集群资源的访问权限,以使只有经过授权的实体才能与敏感的组件进行交互。使用 AWS Transit Gateway 和 Global Accelerator 可以增强网络安全性,这两项服务在区域之间提供了安全的通信渠道,而且有助于缓解分布式拒绝服务(DDoS)攻击。Aurora Global Database 利用静态加密和传输中加密来增强数据安全性,以保护敏感信息免遭未经授权的访问。此外,AWS Identity and Access Management(AWS IAM)用来管理用户权限和访问策略,以使只有经过身份验证和授权的用户才能与 AWS 资源进行交互。
-
可靠性
本指南在架构的多个层级中包含冗余和容错功能。Amazon EKS 利用多个可用区来分配工作负载,以实现高可用性和容错功能。使用 Aurora Global Database,可通过跨区域复制数据、最大限度地降低数据丢失风险以及帮助确保区域中断时的运营连续性来增强数据库可靠性。此外,Global Accelerator 会将流量路由到运行状况良好的端点,并自动将流量从运行状况不佳或性能下降的资源重新路由出去,以保持服务可用性。Amazon EKS 和应用程序负载均衡器内的自动扩缩机制有助于管理工作负载需求的波动,这样,无需手动干预即可动态分配资源以满足性能需求。
-
性能效率
本指南利用各种 AWS 服务和功能来简化资源利用、增强可扩展性,以及最大限度地减小延迟。 Amazon EKS 采用自动扩展功能,以根据工作负载需求动态调整计算资源。利用 Horizontal Pod Autoscaler 和 Karpenter 等插件以及应用程序负载均衡器,支持对应用程序和 worker 节点进行自动扩展和弹性扩展,以及在运行状况良好的目标之间高效地分配流量。
Aurora 有助于跨区域扩展数据库读取,并将应用程序放在用户附近的位置。此外,与不使用 Aurora Optimized Reads for Aurora PostgreSQL 的实例相比,Aurora Optimized Reads for Aurora PostgreSQL 最多可以将查询延迟缩小到 1/8 并节省 30% 的成本。
Global Accelerator 通过 AWS 全球网络基础设施路由应用程序流量,进一步将网络性能提高了多达 60%,并利用从遍布全球的 AWS 边缘站点投放的两个静态 IP 简化了多区域部署的管理。
-
成本优化
在本指南中,通过战略性地利用 AWS 服务和功能来帮助优化成本,并侧重于最大限度地提高效率,同时最大限度地减少开支。借助 Amazon EKS,Horizonal Pod Auto Scaling 和 Karpenter 可以自动扩缩应用程序和 worker 节点,以优化资源分配,从而满足不同的需求水平。
Aurora 提供了两种针对特定工作负载需求量身定制的存储配置,因此在成本优化方面发挥了关键作用。Aurora 标准配置为具有中等 I/O 使用率的应用程序提供了经济实惠的定价,而 Aurora I/O 优化型配置为 I/O 密集型工作负载提供了增强定价,并支持在不超支的情况下实现最佳性能。Aurora 自动扩展功能根据应用程序工作负载的波动动态调整只读副本,以便高效地利用资源以及最大限度地减少不必要的开支。
此外,通过在 Aurora 和 Amazon EKS 上使用 AWS Graviton 处理器(特别是 Graviton3 实例),可以优化性价比,并在保持高性能的同时节省大量成本。
-
可持续性
本指南将在 AWS 云端部署和集成 Amazon EKS 集群和 Aurora Global Database,无需购买任何物理硬件。容量提供程序最大限度地减少了虚拟“基础设施”预置,并在工作负载需要时执行必要的自动扩展活动。
在 Kubernetes 平台上运行的每个容器组(pod)(包括 Amazon EKS 集群和 Aurora Global Database)都会消耗内存、CPU、I/O 和其他资源。
此外,通过支持使用节能型处理器实例(例如 AWS Graviton 处理器),本指南提高了可持续性。通过在 Amazon EC2 和 Aurora 中使用 Graviton,能够以更少的资源提高工作负载的性能,从而减少用户的总体资源占用量。
相关内容
利用多区域 Amazon EKS 和 Amazon Aurora Global Database 扩展应用程序:第 1 部分
利用多区域 Amazon EKS 和 Amazon Aurora Global Database 扩展应用程序:第 2 部分
免责声明
示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 Amazon EC2 实例或使用 Amazon S3 存储)而产生 AWS 费用。
本指南中提及第三方服务或组织并不意味着 Amazon 或 AWS 与第三方之间存在认可、赞助或从属关系。AWS 的指导是一个技术起点,您可以在部署架构时自定义与第三方服务的集成。