AWS Web 托管架构的关键组件 - 托管于 AWS 云中的 Web 应用程序

AWS Web 托管架构的关键组件

以下各节将概述 AWS Web 托管架构的一些关键组件以及它们与传统 Web 托管组件的区别。

网络管理

在 AWS 云中,能够将您的网络与其他客户的网络分割开来,从而实现更加安全、更加可扩展的架构。安全组可提供主机级安全性(请参阅主机安全部分),而 Amazon Virtual Private Cloud (Amazon VPC) 则使您能够在您定义的逻辑隔离的虚拟网络中启动资源。

Amazon VPC 是一项服务,可让您完全控制在 AWS 中设置的网络的详细信息。这种控制的示例包括为 Web 服务器创建面向公众的子网,以及为数据库创建没有 Internet 访问权限的私有子网。此外,借助 Amazon VPC,您还可以使用硬件虚拟专用网络 (VPN) 创建混合架构,并将 AWS 云用作您自己的数据中心的扩展。

除了为您的网络提供传统的 IPv4 支持之外,Amazon VPC 还包括 IPv6 支持。

内容分发

如果您的 Web 流量是地理上分散的,那么在全球复制您的整个基础设施并不总是可行,当然也不具有成本效益。借助 内容分发网络 (CDN),您能够利用其边缘站点的全球网络向客户分发视频、网页、图像等 Web 内容的缓存副本。CDN 使用距离客户或原始请求位置最近的边缘站点,以便缩短响应时间。从缓存中提供 Web 资产可以大幅提高吞吐量。对于动态数据,许多 CDN 都可以配置为从源服务器中检索数据。

您可以使用 CloudFront,借助全球边缘站点网络交付您的网站,包括动态、静态和流媒体内容。CloudFront 会自动将您的内容请求路由到最近的边缘站点,从而以尽可能最佳的性能交付内容。CloudFront 经过优化,可与其他 AWS 服务配合使用,例如 Amazon S3Amazon Elastic Compute Cloud (Amazon EC2)。CloudFront 也可与任何非 AWS 源服务器的源服务器无缝配合,这些服务器存储您的最新版本原始文件。

与其他 AWS 服务相同,使用 CloudFront 无须签订合同或购买月度额,您只需依照使用该服务交付的实际内容流量多少支付费用。

此外,Web 应用程序基础设施中的任何现有边缘缓存解决方案都应在 AWS 云中运行良好。

管理公有 DNS

将 Web 应用程序迁移到 AWS 云需要进行一些域名系统 (DNS) 更改。为了帮助您管理 DNS 路由,AWS 提供了 Amazon Route 53,它是一种高度可用且可扩展的云 DNS Web 服务。Route 53 的目的是为开发人员和企业提供一种非常可靠且经济高效的方式,把名称(如“www.example.com”)转换为计算机用于互相连接的数字 IP 地址(如 192.0.2.1),从而将最终用户路由到 Internet 应用程序。Route 53 也与 IPv6 完全兼容。

主机安全

除了在边缘进行入站网络流量筛选外,AWS 还建议 Web 应用程序在主机级别应用网络流量筛选。Amazon EC2 提供了一个名为安全组的功能。安全组类似于入站网络防火墙,让您能够指定允许访问 EC2 实例的网络协议、端口和以及源 IP 范围。

您可以为每个 EC2 实例分配一个或多个安全组。每个安全组均允许适当的流量进入每个实例。可以配置安全组,以便只有特定的子网、IP 地址和资源才能访问 EC2 实例。或者,它们可以引用其他安全组来限制对特定组中 EC2 实例的访问。

在图 3 中的 AWS Web 托管架构中,Web 服务器集群的安全组可能只允许从 Web 层负载均衡器进行访问,并且仅允许通过端口 80 和 443(HTTP 和 HTTPS)上的 TCP 进行访问。另一方面,应用程序服务器安全组可能只允许从应用程序层负载均衡器进行访问。在此模型中,您的支持工程师还需要访问 EC2 实例,这一点可以通过 AWS Systems Manager Session Manager 来实现。有关安全性的更深入讨论,请参阅 AWS 云安全性,其中包含安全公告、认证信息和解释 AWS 安全功能的安全白皮书。

跨集群的负载均衡

硬件负载均衡器是传统 Web 应用程序架构中常见的网络设备。AWS 通过 Elastic Load Balancing (ELB) 服务提供此功能。ELB 自动将传入的应用程序流量分配到多个目标,例如 EC2 实例、容器、IP 地址、AWS Lambda 函数和虚拟设备。它可以在单个可用区内处理不断变化的应用程序流量负载,也可以跨多个可用区处理此类负载。Elastic Load Balancing 提供四种负载均衡器,它们均能实现高可用性、自动扩展和可靠的安全性,因此能让您的应用程序获得容错能力。

查找其他主机和服务

在传统的 Web 托管架构中,大多数主机均具有静态 IP 地址。在 AWS 云中,您的大多数主机均具有动态 IP 地址。尽管每个 EC2 实例都拥有公有和私有 DNS 条目并可通过 Internet 进行寻址,但是 DNS 条目和 IP 地址是在实例启动时动态分配的。它们不能手动分配。静态 IP 地址(在 AWS 术语中指弹性 IP 地址) 可在实例启动后分配给运行中的实例。所以对于需要一致的终端节点的服务和实例(例如主数据库、中央文件服务器和 EC2 托管的负载均衡器等),都应该分配弹性 IP 地址。

在 Web 应用程序内进行缓存

内存中的应用程序缓存可以通过缓存常用信息来降低服务负载并提高数据库层的性能和扩展性。Amazon ElastiCache 是一种让用户能够在云中轻松部署、操作和扩展内存缓存的 Web 服务。您可以将创建的内存中的缓存配置为随负载自动扩展并自动替换故障节点。ElastiCache 兼容 Memcached 和 Redis 协议,从而简化了当前本地解决方案的迁移。