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

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

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

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

AWS Global Accelerator、Amazon CloudFront、Amazon API Gateway、AWS Lambda 函数 URL、AWS AppSync API 和 Elastic Load Balancing(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 和基于延迟的路由功能。

为了确认您的工作负载本身具有高可用性,请使用 Elastic Load Balancing(ELB)。Amazon Route 53 可用于将流量定向到 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)、Elastic Load Balancing(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. 当使用 Elastic Load Balancing 作为流量的目标时,使用指向负载均衡器的区域端点的 Amazon Route 53 来创建别名记录。在创建别名记录期间,将评估目标运行状况选项设置为“是”。

    2. 对于无服务器工作负载或私有 API,当使用 API Gateway 时,使用 Route 53 将流量引向 API Gateway

  4. 决定内容分发网络。

    1. 要使用更靠近用户的边缘站点传输内容,首先了解 CloudFront 如何传输内容

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

  5. 设置应用程序层保护:AWS WAF 帮助您免受可能会影响可用性、危及安全性或消耗过多资源的常见 Web 漏洞和机器人的攻击。若要更深入了解,请查看 AWS WAF 的工作原理,并且在您准备好实施保护措施来防范应用程序层 HTTP POST AND GET 泛洪时,请查看开始使用 AWS WAF。您还可以使用 AWS WAF 和 CloudFront,请参阅有关 AWS WAF 如何与 Amazon CloudFront 功能配合使用的文档。

  6. 设置额外的 DDoS 防护:默认情况下,所有 AWS 客户都可以免费使用 AWS Shield Standard 获得保护,防范针对您的网站或应用程序的常见、最常发生的网络和传输层 DDoS 攻击。对于在 Amazon EC2、Elastic Load Balancing、Amazon CloudFront、AWS Global Accelerator 和 Amazon Route 53 上运行,面向互联网的应用程序,要获得额外保护,您可以考虑 AWS Shield Advanced 并查看 DDoS 弹性架构的示例。要保护您的工作负载和公共端点,防止受到 DDoS 攻击,请参阅开始使用 AWS Shield Advanced

资源

相关最佳实践:

相关文档:

相关视频:

相关示例: