构建强大的 AWS 架构:多账户与多区域环境的卓越实践
在当今数字化时代,云计算已成为企业发展的核心驱动力。亚马逊云科技(AWS)作为全球领先的云服务提供商,为企业提供了丰富的工具和服务。本文将深入探讨 AWS 多账户和多区域环境的基础构建,以及如何遵循 AWS Well-Architected 原则来优化架构。
多账户结构的必要性与优势
多账户结构在 AWS 中托管多个工作负载时具有显著优势。它可以实现资源隔离、精细的权限管理和成本控制。然而,要实现这些优势,需要结合多种服务、解决方案和部署框架,并进行一定程度的定制。
例如,通过使用 AWS 提供的清单文件,可以明确部署代码的位置、部署方法以及部署目标。以下是一个示例清单文件:
- name: create-iam-role
resource_file: s3://marketplace-sa-resources-ct-us-east-1/ctlabs/describe-regions-iam-role.template
deploy_method: stack_set
deployment_targets:
organizational_units:
- Security
- Sandbox
regions:
- us-east-1
这个清单文件回答了三个关键问题:
| 问题 | 对应的 YAML 键 | 说明 |
| ---- | ---- | ---- |
| 要部署的代码在哪里? | resource_file | 指定代码所在的位置,如 S3 存储桶中的模板文件。 |
| 要部署什么? | deploy_method | 可以是 scp 或 stack_set。 |
| 资源应部署到哪里? | deployment_targets | 可以使用单个账户或代表一组账户的组织单元(OU)。 |
当这个文件提交到解决方案跟踪的 Git 存储库时,管道将触发,从而将服务控制策略(SCP)和 CloudFormation 模板部署到目标位置,如安全和沙箱 OU。
AWS Well-Architected 的起源与发展
2012 年,亚马逊弹性块存储(EBS)服务的一次故障让部分客户的工作负载受到影响,但也有一些客户几乎未受影响。这表明,除了云提供商的能力外,服务的使用模式对工作负载的稳定性起着重要作用。经过深入研究,AWS 结合客户的架构模式和自身的数据分析,形成了 AWS Well-Architected。它最初是一套最佳实践,后来发展成为白皮书和架构指南,帮助客户以可靠和高效的方式构建云工作负载。
如今,AWS Well-Architected 不仅仅是通用的架构最佳实践,还可以帮助应用团队根据技术和业务垂直领域的最佳实践来评估工作负载。它能识别优势领域,发现未来优化的机会。但需要注意的是,它不是一种审计机制,而是一种促进更好架构决策的建设性讨论。
AWS Well-Architected 的核心组件
AWS Well-Architected 包含三个主要组件:框架、透镜(Lenses)和工具。
-
AWS Well-Architected 框架
:提供一系列问题,帮助客户评估其架构与 AWS 最佳实践的契合度。该框架根据六个关键支柱对实践进行分类,以适应不断发展的应用模式。
-
AWS Well-Architected 透镜
:用于根据明确的技术或业务范围和上下文评估架构。不同的透镜适用于不同的行业垂直领域和技术领域,如金融服务、媒体流、混合网络等。例如,SaaS 透镜针对在云端托管 SaaS 应用的客户,提供解决多租户 SaaS 应用常见问题的最佳实践。
-
AWS Well-Architected 工具
:这是一个免费的服务,用于审查在 AWS 中托管的工作负载。它提供统一的方法来评估架构,并提供有价值的建议,以提高工作负载的安全性、成本效益和效率。同时,它还可以跟踪进度,记录决策,方便未来团队成员了解技术决策背后的业务目标。
遵循 AWS Well-Architected 原则的实践
AWS Well-Architected 框架将所有实践分为六个主要支柱:成本优化、可靠性、运营卓越、性能效率、可持续性和安全。下面将重点介绍运营卓越和安全两个支柱的最佳实践。
运营卓越支柱
运营卓越支柱旨在优化新功能和错误修复在客户环境中的交付周期,确保可靠和可重复的操作。以下是一些最佳实践:
1.
小步快跑,尽早发布
:基础设施设计应允许频繁的增量更新,以小的、可逆的步骤实施更改,便于识别和解决问题,减少对工作负载运营的重大干扰。
2.
基础设施即代码管理
:将整个技术栈(应用程序、基础设施等)表示为代码,通过自动化脚本操作程序,减少人为错误,确保对各种情况的一致响应。
3.
从运营失败中学习和改进
:建立从所有运营事件和失败中学习的文化,将运营中断视为改进和知识共享的机会。
4.
频繁更新和增强运营方法
:随着应用程序的不断发展,运营程序也需要不断更新。可以通过组织运营游戏日来验证现有程序,确保其在注入故障时仍能正常工作。
以自动启用新 AWS 账户的可选区域为例,其操作步骤如下:
graph LR
A[平台开发人员使用 IaC 添加新账户配置] --> B[CI/CD 管道启动并创建新账户]
B --> C[AWS Organizations 服务在 us-east-1 发出事件]
C --> D[事件转发到指定自动化账户的自定义事件总线]
D --> E[EventBridge 规则触发 AWS Step Functions 状态机]
E --> F[状态机调用两个 Lambda 函数]
F --> G[Lambda 函数调用 API 启用新区域]
- 平台开发人员利用基础设施即代码(IaC)实践,使用 CloudFormation、Terraform 或 Cloud Development Kit(CDK)等工具添加新账户配置。
- CI/CD 管道启动,在 AWS Organizations 组织中创建新账户。
- AWS Organizations 服务在 us-east-1(全局服务事件的默认区域)发出事件。
- 为限制对组织管理账户的访问,将事件转发到指定的自动化或工具账户的自定义事件总线。
- 事件到达目标账户后,EventBridge 规则触发 AWS Step Functions 状态机。
- 状态机调用两个 Lambda 函数:一个用于启用可选区域(如 eu-central-2),另一个用于检查该区域是否可用。
- 两个 Lambda 函数在新 AWS 账户上调用相应的 API,以实现启用新区域的目标状态。
安全支柱
安全支柱专注于改善基础设施和应用程序工作负载的安全态势。以下是一些最佳实践:
1.
集中身份和访问管理
:避免在任何 AWS 账户中创建静态身份和访问管理(IAM)凭证,通过集中身份提供商(IdP)联合所有人类访问。对于技术用例,使用 IAM 角色获取动态生成的临时凭证。但在某些情况下,如 IdP 故障或安全事件需要手动干预时,可在管理账户中创建有限数量的静态凭证,并进行充分的监控和审计。
2.
实施深度安全原则
:从网络边缘到 VPC 和子网的边界,再到实例级别,应用多层安全控制,结合 AWS 服务控制策略(SCP)、AWS Config 规则和网络控制措施,确保安全。
3.
保护数据传输和存储安全
:许多 AWS 服务提供数据静态加密功能,但对于金融服务等敏感领域的客户,可使用 AWS 密钥管理服务(KMS)管理自己的加密密钥。
4.
将安全措施自动化为代码
:利用自动化软件安全机制提高可扩展性和成本效益,使用版本控制的模板定义和管理安全控制。
5.
减少直接人工数据访问模式
:使用机制和工具减少或消除对数据的直接访问或手动处理,降低敏感数据处理中的人为错误风险。
6.
准备安全事件响应
:每个组织在云环境中的事件管理方式略有不同,因此需要有经过测试且适合自身需求和团队结构的明确事件管理程序。
以安全监控 break-glass 用户访问为例,其操作步骤如下:
graph LR
A[安全团队成员使用管理账户的 IAM 用户凭证触发 break-glass 流程] --> B[用户登录在登录区域的 EventBridge 服务中创建事件]
B --> C[使用 AWS User Notifications 服务跟踪事件]
C --> D[配置 IAM 用户 ARN 以跟踪事件]
D --> E[事件转发到聚合区域]
E --> F[在配置的目标平台(如 MS Teams、Slack 或电子邮件)发送通知]
- 在涉及 IdP 的安全漏洞或服务中断事件中,安全团队成员可能需要使用 AWS 管理账户中配置的 IAM 用户凭证触发 break-glass 流程。
- 用户登录会在登录区域的 EventBridge 服务中创建一个事件。
- 为跟踪这些事件,可使用 AWS User Notifications 服务,该服务处理管理账户目标区域中的事件跟踪和转发生命周期管理。
-
为跟踪 break-glass 用户的控制台登录事件,可在 User Notifications 服务中配置 IAM 用户的 Amazon 资源名称(ARN)。例如,要跟踪名为 break-glass-1 的用户,可使用
arn:aws:iam::<management_account_id>:user/break-glass-1。 - 事件随后转发到由服务管理和配置的三个聚合区域之一。
- 在配置的目标平台(如 MS Teams、Slack 或电子邮件)发送通知。
通过遵循 AWS Well-Architected 原则,企业可以构建更加可靠、安全和高效的云架构,为业务的成功奠定坚实基础。同时,不断学习和适应新的最佳实践,将有助于优化架构,满足不断变化的业务需求。
构建强大的 AWS 架构:多账户与多区域环境的卓越实践
成本优化支柱
成本优化支柱旨在帮助企业在满足业务需求的前提下,尽可能降低在 AWS 上的成本。以下是一些成本优化的最佳实践:
1.
资源按需使用
:根据实际业务需求动态调整资源的使用量,避免过度配置资源导致的浪费。例如,对于计算资源,可以使用自动扩展组根据工作负载的变化自动调整实例数量。
2.
选择合适的实例类型
:根据应用程序的性能需求和预算,选择最合适的实例类型。AWS 提供了多种不同类型的实例,如通用型、计算优化型、内存优化型等,每种类型都有不同的性能和价格特点。
3.
使用预留实例和节省计划
:对于长期稳定的工作负载,可以考虑使用预留实例或节省计划来获得更大的成本折扣。预留实例需要提前支付一定的费用,但可以在一定期限内获得较低的每小时使用成本;节省计划则提供了更灵活的方式,根据使用量来确定折扣比例。
4.
优化存储成本
:根据数据的访问频率和重要性,选择合适的存储服务。例如,对于频繁访问的数据,可以使用 Amazon S3 标准存储;对于不经常访问的数据,可以使用 Amazon S3 冰川存储等低成本存储服务。
成本优化实践示例
以一个电商网站为例,在促销活动期间,网站的流量会大幅增加,需要更多的计算资源来处理用户请求。为了优化成本,可以采取以下步骤:
1. 在促销活动前,根据历史数据预测流量增长情况,使用自动扩展组设置合适的实例数量上限和下限。
2. 选择合适的实例类型,对于计算密集型的任务,可以选择计算优化型实例;对于内存密集型的任务,可以选择内存优化型实例。
3. 考虑使用预留实例或节省计划来降低长期成本。如果促销活动是定期举行的,可以提前购买预留实例;如果流量波动较大,可以选择节省计划。
4. 对于用户上传的图片和视频等静态资源,可以使用 Amazon S3 存储,并根据访问频率进行分层存储,将不经常访问的资源迁移到低成本存储服务中。
可靠性支柱
可靠性支柱关注的是确保工作负载在面对各种故障和中断时能够持续稳定运行。以下是一些可靠性的最佳实践:
1.
多区域部署
:将工作负载部署在多个 AWS 区域,以提高可用性和容错能力。当一个区域出现故障时,应用程序可以自动切换到其他区域继续运行。
2.
数据备份和恢复
:定期备份重要数据,并确保能够在需要时快速恢复。可以使用 Amazon S3 等存储服务进行数据备份,同时使用 AWS 提供的恢复工具来简化恢复过程。
3.
使用弹性伸缩
:通过自动扩展组和负载均衡器,根据工作负载的变化自动调整实例数量,确保应用程序始终能够处理用户请求。
4.
监控和故障诊断
:建立完善的监控系统,实时监测工作负载的性能和状态。使用 AWS CloudWatch 等服务收集指标数据,并设置警报规则,及时发现和处理潜在的故障。
可靠性实践示例
以一个在线游戏为例,为了确保游戏的可靠性,可以采取以下措施:
1. 在多个 AWS 区域部署游戏服务器,使用 Amazon Route 53 进行流量路由,将用户请求引导到最近的可用区域。
2. 定期备份游戏数据,包括用户信息、游戏进度等,存储在 Amazon S3 中。同时,使用 AWS Backup 服务自动化备份过程,并设置恢复测试计划,确保数据能够在需要时快速恢复。
3. 使用自动扩展组根据玩家数量自动调整游戏服务器的实例数量。当玩家数量增加时,自动增加实例;当玩家数量减少时,自动减少实例,以节省成本。
4. 建立监控系统,使用 Amazon CloudWatch 监控游戏服务器的性能指标,如 CPU 使用率、内存使用率、网络带宽等。设置警报规则,当指标超过阈值时及时通知运维人员进行处理。
性能效率支柱
性能效率支柱强调的是如何在满足业务需求的前提下,以最有效的方式利用 AWS 资源。以下是一些性能效率的最佳实践:
1.
优化应用程序代码
:对应用程序代码进行性能优化,减少不必要的计算和资源消耗。例如,使用缓存技术减少数据库查询次数,优化算法提高程序运行速度。
2.
选择合适的数据库
:根据应用程序的特点和需求,选择合适的数据库服务。AWS 提供了多种数据库服务,如 Amazon RDS(关系型数据库)、Amazon DynamoDB(非关系型数据库)等,每种数据库都有不同的性能和适用场景。
3.
使用内容分发网络(CDN)
:对于静态内容,如图片、视频、CSS 文件等,可以使用 Amazon CloudFront 等 CDN 服务来加速内容的分发,减少用户的访问延迟。
4.
优化网络配置
:合理配置网络拓扑和安全组规则,确保网络的高效运行。例如,使用 VPC 进行网络隔离,设置合适的子网和路由规则,优化网络带宽使用。
性能效率实践示例
以一个视频流媒体应用为例,为了提高性能效率,可以采取以下步骤:
1. 对视频编码算法进行优化,减少视频文件的大小,同时保证视频质量。例如,使用 H.265 等高效编码标准。
2. 选择合适的数据库来存储视频元数据,如视频标题、描述、播放次数等。对于高并发的查询场景,可以选择 Amazon DynamoDB 等非关系型数据库。
3. 使用 Amazon CloudFront 作为 CDN,将视频文件缓存到全球各地的边缘节点,减少用户的访问延迟。
4. 优化网络配置,使用 VPC 进行网络隔离,设置合适的安全组规则,确保视频数据的安全传输。同时,使用弹性 IP 地址和负载均衡器来提高网络的可用性和性能。
可持续性支柱
可持续性支柱关注的是如何在使用 AWS 资源的过程中,减少对环境的影响,实现可持续发展。以下是一些可持续性的最佳实践:
1.
优化能源使用
:通过合理配置资源和使用节能技术,减少能源消耗。例如,使用 AWS 提供的节能实例类型,优化数据中心的能源管理。
2.
减少碳排放
:采取措施减少碳排放,如使用可再生能源、优化资源利用率等。AWS 承诺到 2025 年实现 100% 使用可再生能源。
3.
循环利用资源
:尽量减少资源的浪费,对废弃的资源进行回收和再利用。例如,对废弃的服务器硬件进行回收处理,提取其中的可再利用材料。
可持续性实践示例
以一个企业级应用为例,为了实现可持续发展,可以采取以下措施:
1. 选择 AWS 提供的节能实例类型,如 T 系列通用型实例,这些实例在低负载时可以自动降低功耗。
2. 优化应用程序的资源利用率,减少不必要的计算和存储资源消耗。例如,使用容器化技术和微服务架构,提高资源的共享和复用率。
3. 关注 AWS 的可持续发展报告,了解其在可再生能源使用和碳排放减少方面的进展,并根据需要调整自身的使用策略。
通过遵循 AWS Well-Architected 的六个支柱的最佳实践,企业可以构建更加可靠、安全、高效和可持续的云架构,满足业务的不断发展和变化需求。在实际应用中,需要根据具体的业务场景和需求,综合考虑各个支柱的因素,制定最合适的架构方案。同时,不断学习和关注 AWS 的最新技术和最佳实践,持续优化架构,以保持竞争优势。
超级会员免费看

400

被折叠的 条评论
为什么被折叠?



