REL02-BP01 为工作负载公共端点使用高度可用的网络连接 - AWS Well-Architected 框架

REL02-BP01 为工作负载公共端点使用高度可用的网络连接

构建与工作负载的公共端点的高可用性网络连接有助于减少因连接丢失而导致的停机,并提高工作负载的可用性和改进 SLA。为此,需使用高度可用的 DNS、内容分发网络(CDN)、API Gateway、负载均衡或反向代理。

期望结果:为公共端点规划、构建和实施高度可用的网络连接至关重要。如果工作负载因连接中断而无法访问,即使工作负载正在运行且可用,客户也会看到系统处于关闭状态。通过将工作负载的公共端点的高可用性和弹性网络连接与工作负载本身的弹性架构结合起来,您可以为客户提供最佳的可用性和服务级别。

AWS Global Accelerator、Amazon CloudFront、Amazon API Gateway、AWS Lambda 函数 URL、AWS AppSync API 和弹性负载均衡(ELB)都提供了高度可用的公有端点。Amazon Route 53 为域名解析提供了高度可用的 DNS 服务,可确认公共端点地址是否可以解析。

您还可以评估 AWS Marketplace 软件设备是否适用于负载均衡和代理。

常见反模式:

  • 在没有规划 DNS 和网络连接以实现高可用性的情况下设计高可用性工作负载。

  • 在各个实例或容器中使用公有互联网地址并使用 DNS 管理与它们的连接。

  • 使用 IP 地址而非域名来查找服务。

  • 没有测试与公共端点的连接丢失的场景。

  • 没有分析网络吞吐量需求和分发模式。

  • 没有测试和规划与工作负载公共端点的互联网连接可能中断的情况。

  • 为较大地理区域提供内容(如网页、静态资产或媒体文件),而不使用内容分发网络。

  • 没有为分布式拒绝服务(DDoS)攻击制定计划。DDoS 攻击会引发关闭您的用户的合法流量并降低可用性的风险。

建立此最佳实践的好处:设计具有韧性的高可用性网络连接,确保用户可以访问和使用工作负载。

在未建立这种最佳实践的情况下暴露的风险等级:

实施指导

构建与公共端点的高可用性网络连接的核心是流量的路由。为了验证您的流量是否能够到达端点,DNS 必须能够将域名解析为其相应的 IP 地址。使用 Amazon Route 53 等高度可用且可扩展的域名系统(DNS)来管理域名的 DNS 记录。您还可以使用 Amazon Route 53 提供的运行状况检查。运行状况检查会确认应用程序可访问、可用且正常运行,并且支持以模仿用户行为的方式进行设置,例如请求网页或特定 URL。如果发生故障,Amazon Route 53 会响应 DNS 解析请求,并仅将流量定向到运行状况良好的端点。您还可以考虑使用 Amazon Route 53 提供的 Geo DNS 和基于延迟的路由功能。

要验证工作负载本身是否具有高可用性,请使用弹性负载均衡(ELB)。Amazon Route 53 可用于将流量定向到 ELB,而 ELB 会将流量分配到目标计算实例。您还可以将 Amazon API Gateway 与 AWS Lambda 结合使用,实现无服务器解决方案。客户也可以在多个 AWS 区域 中运行工作负载。借助多站点主动/主动模式,工作负载可以处理来自多个区域的流量。在多站点主动/被动模式下,工作负载为来自主动区域的流量提供服务,同时将数据复制到辅助区域,并在主区域出现故障时变为主动区域。然后,可以使用 Route 53 运行状况检查来控制从主区域中的任何端点到辅助区域的端点的 DNS 故障转移,从而验证工作负载是否可以访问并可供用户使用。

Amazon CloudFront 提供一个简单的 API,通过使用世界各地的边缘站点网络提供请求,从而分发具有低延迟和高数据传输速率的内容。内容分发网络(CDN)提供位于或缓存在用户附近位置的内容,从而为客户提供服务。随着内容负载从服务器转移到 CloudFront 的边缘站点,这也提高了应用程序的可用性。边缘站点和区域边缘高速缓存在靠近查看者的位置保存内容的缓存副本,以便可以快速检索并提高工作负载的可访问性和可用性。

对于用户在地理上分散的工作负载,AWS Global Accelerator 可帮助您提高应用程序的可用性和性能。AWS Global Accelerator 提供任播静态 IP 地址,它充当在一个或多个 AWS 区域 中托管的应用程序的固定入口点。这样就可以让流量在尽可能靠近用户的位置进入 AWS 全球网络,从而提高工作负载的可访问性和可用性。AWS Global Accelerator 还使用 TCP、HTTP 和 HTTPS 运行状况检查来监控应用程序端点的运行状况。端点的运行状况或配置发生任何更改,都会允许用户流量重定向到运行状况良好的端点,为用户提供最佳性能和可用性。此外,AWS Global Accelerator 采用故障隔离设计,使用由独立网络区域提供的两个静态 IPv4 地址,提高了应用程序的可用性。

为了帮助保护客户免受 DDoS 攻击,AWS 提供 AWS Shield Standard。Shield Standard 会自动开启,可防范 SYN/UDP 泛洪和反射攻击等常见基础设施(第 3 层和第 4 层)攻击,以便在 AWS 上支持应用程序的高可用性。要针对更复杂和更大规模的攻击(如 UDP 泛洪)、状态耗尽攻击(如 TCP SYN 泛洪)提供额外保护,以及要帮助保护 Amazon Elastic Compute Cloud(Amazon EC2)、弹性负载均衡(ELB)、Amazon CloudFront、AWS Global Accelerator 和 Route 53 上运行的应用程序,可以考虑使用 AWS Shield Advanced。为了防范 HTTP POST 或 GET 泛洪等应用程序层攻击,请使用 AWS WAF。AWS WAF 可使用 IP 地址、HTTP 标头、HTTP 主体、URI 字符串、SQL 注入和跨站点脚本条件来确定是应该阻止还是允许请求。

实施步骤

  1. 设置高度可用的 DNS:Amazon Route 53 是一种可用性高、可扩展性强的域名系统(DNS)Web 服务。Route 53 会将用户请求连接到在 AWS 或本地运行的互联网应用程序。有关更多信息,请参阅将 Amazon Route 53 配置为 DNS 服务

  2. 设置运行状况检查:当使用 Route 53 时,确认只有运行状况良好的目标才可解析。首先创建 Route 53 运行状况检查并配置 DNS 故障转移。在设置运行状况检查时,必须考虑以下方面:

  3. 将 DNS 服务连接到端点。

    1. 使用弹性负载均衡作为流量目标时,请使用 Amazon Route 53 创建指向负载均衡器区域端点的别名记录。在创建别名记录期间,将评估目标运行状况选项设置为“是”。

    2. 对于使用 API Gateway 时的无服务器工作负载或私有 API,请使用 Route 53 将流量路由到 API Gateway

  4. 决定内容分发网络。

    1. 要使用离用户更近的边缘站点分发内容,首先要了解 CloudFront 如何分发内容

    2. 开始使用简单 CloudFront 分发。然后,CloudFront 知道您希望从何处分发内容,还知道有关如何跟踪和管理内容分发的详细信息。在设置 CloudFront 分发时,必须了解和考虑以下方面:

  5. 设置应用程序层保护:AWS WAF 帮助您免受可能会影响可用性、危及安全性或消耗过多资源的常见 Web 漏洞和机器人的攻击。若要加深理解,请查看 How AWS WAF works;若准备好实施针对应用层 HTTP POST AND GET 泛洪的保护,请查看 Getting started with AWS WAF。要将 AWS WAF 与 CloudFront 结合使用,请参阅有关 How AWS WAF works with Amazon CloudFront features 的文档。

  6. 设置额外的 DDoS 防护:默认情况下,所有 AWS 客户都可以免费使用 AWS Shield Standard 获得保护,防范针对您的网站或应用程序的常见、最常发生的网络和传输层 DDoS 攻击。要进一步保护在 Amazon EC2、弹性负载均衡、Amazon CloudFront、AWS Global Accelerator 和 Amazon Route 53 上运行的面向互联网的应用程序,可以考虑 AWS Shield Advanced 并查看 Examples of DDoS resilient architectures。要保护工作负载和公共端点免受 DDoS 攻击,请查看 Getting started with AWS Shield Advanced

资源

相关最佳实践:

相关文档:

相关视频:

相关示例: