此体系结构适用于使用 HTTP(S) 和非 HTTP(S) 协议的面向 Internet 的全局应用程序。 它提供基于 DNS 的全局负载均衡、两种形式的区域负载均衡和全局虚拟网络对等互连,从而可以创建可承受区域中断的高可用性体系结构。 流量检查由 Azure Web 应用程序防火墙 (WAF) 和 Azure 防火墙提供。
体系结构说明
本文档中的体系结构可轻松扩展到中心辐射型虚拟网络设计,其中 Azure 防火墙将位于中心网络中,应用程序网关也将同样位于中心网络或分支中。 如果应用程序网关部署在中心内,你仍需要多个应用程序网关(每个网关用于一组给定的应用程序),以避免 RBAC 冲突并防止达到应用程序网关限制(请参阅应用程序网关限制)。
在虚拟 WAN 环境中,应用程序网关不能部署在中心,因此它们将安装在分支虚拟网络中。
建议的体系结构选择在 Azure 防火墙前通过(基于应用程序网关的)Web 应用程序防火墙对 Web 内容进行双重检查。 虽然存在如虚拟网络的防火墙和应用程序网关中所述的其他选项,但此选项是最灵活和最完整的:它在最终应用程序的 HTTP 标头 X-Forwarded-For
中公开客户端的 IP 地址,提供端到端加密,并阻止客户端绕过 WAF 访问应用程序。
如果只公开 Web 应用程序(没有非 HTTP(S) 应用程序),并且不需要 WAF 和 Azure 防火墙对此 Web 流量进行双重检查,Azure Front Door 将是比流量管理器更好的全局负载均衡解决方案。 Front Door 是 HTTP(S) 内容的第 7 层负载平衡器,它还提供缓存、流量加速、SSL/TLS 终止、证书管理、运行状况探测和其他功能。 但是,应用程序网关为分层保护方法提供了更好的 Azure 防火墙集成。
入站 HTTP(S) 流量流
下载此体系结构的 Visio 文件。
Azure 流量管理器使用基于 DNS 的路由实现两个区域间传入流量的负载均衡。 流量管理器将针对应用程序的 DNS 查询解析为 Azure 应用程序网关终结点的公共 IP 地址。 应用程序网关的公共终结点充当 HTTP(S) 流量的流量管理器的后端终结点。 流量管理器根据所选的各种路由方法来解析 DNS 查询。 浏览器直接连接到终结点;流量管理器看不到 HTTP(S) 流量。
跨可用性区域部署的应用程序网关从浏览器接收 HTTP(S) 流量,而 Web 应用程序防火墙高级版检查该流量以检测 Web 攻击。 应用程序网关会将流量发送到其后端,即前端虚拟机的内部负载均衡器。 对于此特定流,可以不用严格要求在 Web 服务器前面部署内部负载均衡器,因为应用程序网关可以自行执行此负载均衡。 但是,部署它是为了与非 HTTP(S) 应用程序的流保持一致。
Azure 防火墙高级版将通过应用程序网关子网上应用的用户定义路由截获应用程序网关与前端内部负载均衡器之间的流量。 Azure 防火墙高级版将对流量应用 TLS 检查,以增加安全性。 Azure 防火墙也是区域冗余的。 如果 Azure 防火墙在流量中检测到威胁,则会丢弃数据包。 如果未检测到,则在检查成功后,Azure 防火墙会将流量转发到目标 Web 层内部负载均衡器。
Web 层是三层应用程序的第一层,它包含用户界面,并且还分析用户交互。 Web 层负载均衡器分布在三个可用性区域,并将流量分配到三个 Web 层虚拟机中的每一个。
Web 层虚拟机分布在三个可用性区域,并通过专用的内部负载均衡器与业务层通信。
业务层处理用户交互并确定后续步骤,并且位于 Web 层和数据层之间。 业务层内部负载均衡器跨三个可用性区域将流量分配到业务层虚拟机。 业务层负载均衡器是区域冗余的,类似于 Web 层负载均衡器。
业务层虚拟机分布在可用性区域中,它们会将流量路由到数据库的可用性组侦听器。
数据层存储应用程序数据,通常存储在数据库、对象存储或文件共享中。 此体系结构将虚拟机上的 SQL Server 分布在三个可用性区域。 它们位于可用性组中,并使用分布式网络名称 (DNN) 将流量路由到可用性组侦听程序实现负载均衡。
入站非 HTTP(S) 流量流
下载此体系结构的 Visio 文件。
Azure 流量管理器使用基于 DNS 的路由实现两个区域间传入流量的负载均衡。 流量管理器将针对应用程序的 DNS 查询解析为 Azure 终结点的公共 IP 地址。 应用程序防火墙的公共终结点充当非 HTTP(S) 流量的流量管理器的后端终结点。 流量管理器根据所选的各种路由方法来解析 DNS 查询。 浏览器直接连接到终结点;流量管理器看不到 HTTP(S) 流量。
Azure 防火墙高级版是区域冗余的,将检查入站流量的安全性。 如果 Azure 防火墙在流量中检测到威胁,则会丢弃数据包。 如果未检测到,则在检查成功后,Azure 防火墙会将流量转发到 Web 层内部负载均衡器,对入站数据包执行目标网络地址转换 (DNAT)。
Web 层是三层应用程序的第一层,它包含用户界面,并且还分析用户交互。 Web 层负载均衡器分布在三个可用性区域,并将流量分配到三个 Web 层虚拟机中的每一个。
Web 层虚拟机分布在三个可用性区域,并通过专用的内部负载均衡器与业务层通信。
业务层处理用户交互并确定后续步骤,并且位于 Web 层和数据层之间。 业务层内部负载均衡器跨三个可用性区域将流量分配到业务层虚拟机。 业务层负载均衡器是区域冗余的,类似于 Web 层负载均衡器。
业务层虚拟机分布在可用性区域中,它们会将流量路由到数据库的可用性组侦听器。
数据层存储应用程序数据,通常存储在数据库、对象存储或文件共享中。 此体系结构将虚拟机上的 SQL Server 分布在三个可用性区域。 它们位于可用性组中,并使用分布式网络名称 (DNN) 将流量路由到可用性组侦听程序实现负载均衡。
出站流量流(所有协议)
虚拟机修补程序更新或其他 Internet 连接的出站流量流将通过用户定义的路由从工作负载虚拟机流向 Azure 防火墙。 Azure 防火墙将实施使用 Web 类别的连接规则以及网络和应用程序规则,以防止工作负载访问不适当的内容或发生数据外泄情况。
组件
- Azure 防火墙是一种基于云的 Microsoft 托管的下一代防火墙,可为北/南和东/西流量流提供深度数据包检查。 它可以分布在可用性区域并提供自动缩放来应对应用程序需求的变化。
- Azure 应用程序网关是具有可选 Web 应用程序防火墙 (WAF) 功能的第 7 层负载均衡器。 应用程序网关的 v2 SKU 支持可用性区域冗余,建议将其用于大多数方案。 应用程序网关包括可配置的水平自动缩放,因此可以自动响应应用程序需求变化。
- Azure 流量管理器是基于 DNS 的全球流量负载均衡器,可在全球 Azure 区域之间向服务分发流量,同时提供高可用性和响应能力。
- Azure 负载均衡器是第 4 层负载均衡器。 区域冗余负载均衡器仍会将出现可用性区域故障的流量分发到剩余区域。
- Azure DDoS 防护具有增强功能,可防范分布式拒绝服务 (DDoS) 攻击。
- Azure DNS 是 DNS 域的托管服务。 它使用 Microsoft Azure 基础结构提供名称解析。 通过在 Azure 中托管域,可以使用与其他 Azure 服务相同的凭据、API、工具和计费来管理 DNS 记录。
- Azure 专用 DNS 区域是 Azure DNS 的一项功能。 Azure DNS 专用区域在虚拟网络内或虚拟网络之间提供名称解析功能。 专用 DNS 区域中包含的记录无法通过 Internet 进行解析。 针对专用 DNS 区域的 DNS 解析只能在链接到它的虚拟网络中进行。
- Azure 虚拟机是一种可缩放的按需计算资源,可用于灵活地进行虚拟化,无需维护物理硬件。 操作系统选项包括 Windows 和 Linux。 应用程序的某些组件可以替换为平台即服务 Azure 资源(例如数据库和前端层),但如果使用专用链接和App 服务 VNet 集成将这些 PaaS 服务引入虚拟网络,体系结构不会发生显著变化。
- Azure 虚拟机规模集是负载均衡的自动化虚拟机缩放,可简化应用程序的管理并提高可用性。
- 借助 VM 上的 SQL Server,可在云中使用完整版本的 SQL Server,而无需管理本地硬件。
- Azure 虚拟网络,它是云中的一种安全专用网络。 它可以将虚拟机彼此连接,连接到 Internet,以及连接到跨界网络。
- 用户定义的路由是一种可替代虚拟网络中默认路由的机制。 在这种情况,它们用于强制入站和出站流量流遍历 Azure 防火墙。
解决方案详细信息
流量管理器 - 我们配置了流量管理器以使用性能路由。 它将流量路由到对于用户来说延迟最低的终结点。 流量管理器会在终结点延迟更改时自动调整其负载均衡算法。 如果发生区域中断,流量管理器会进行自动故障转移。 它使用优先级路由和定期运行状况检查来确定路由流量的位置。
可用性区域 - 体系结构使用了三个可用性区域。 这些分区为每个区域中的应用程序网关、内部负载均衡器和虚拟机创建高可用性体系结构。 如果发生分区中断,该区域中的剩余可用性分区将接管负载,因此不会触发区域性故障转移。
应用程序网关 - 流量管理器提供基于 DNS 的区域性负载均衡,而应用程序网关提供的许多功能都与 Azure Front Door 相同,但仅限于区域级别,例如:
- Web 应用程序防火墙 (WAF)
- 传输层安全性 (TLS) 终止
- 基于路径的路由
- 基于 Cookie 的会话关联
Azure 防火墙 - Azure 防火墙高级版通过检查此体系结构中三种类型的流,为常规应用程序(Web 和非 Web 流量)提供网络安全:
- 来自应用程序网关的入站 HTTP(S) 流通过 Azure 防火墙高级版 TLS 检查进行保护。
- 来自公共 Internet 的入站非 HTTP(S) 流使用其余 Azure 防火墙高级版功能进行检查。
- Azure 防火墙检查来自 Azure 虚拟机的出站流,以防止数据外泄和访问被禁止的站点和应用程序。
虚拟网络对等互连 - 我们将区域之间的对等互连称为“全局虚拟网络对等互连”。全局虚拟网络对等互连在区域之间实现低延迟、高带宽的数据复制。 可以使用此全球对等互连跨 Azure 订阅、Microsoft Entra 租户和部署模型传输数据。 在中心辐射型环境中,中心辐射型网络之间将存在虚拟网络对等互连。
建议
以下建议遵循 Azure 架构良好的框架 (WAF) 的支柱。 WAF 支柱是指导原则,帮助确保云工作负载的质量。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架。
可靠性
区域 - 至少使用两个 Azure 区域以实现高可用性。 可以使用主动/被动或主动/主动配置跨多个 Azure 区域部署应用程序。 如果应用程序的子系统发生故障,多个区域还有助于避免应用程序停机。
- 如果主要区域发生故障,流量管理器将自动将故障转移到次要区域。
- 必须根据技术、法规注意事项和可用性区域支持选择最符合需求的区域。
区域对 - 使用区域对实现最大的复原能力。 确保两个区域对都支持应用程序所需的所有 Azure 服务(请参阅每个区域的服务)。 下面是区域对的两个优点:
- 将逐一对配对的区域进行计划内 Azure 更新,尽量减少停机时间并降低应用程序中断风险。
- 出于税务和法律方面的考虑,数据仍以配对的形式驻留在同一地域内(巴西南部除外)。
可用性区域 - 使用多个可用性区域支持应用程序网关、Azure 防火墙、Azure 负载均衡器和应用程序层(如果可用)。
应用程序网关自动缩放和实例 -为应用程序网关配置至少两个实例以避免停机,并配置自动缩放以动态适应不断变化的应用程序容量需求。
有关详细信息,请参阅:
全局路由
全局路由方法 - 使用最符合客户需求的流量路由方法。 流量管理器支持使用多种流量路由方法来将流量确定地路由到不同的服务终结点。
嵌套配置 - 如果需要进行更精确的控制以便在区域内选择首选故障转移,则可以在嵌套配置中使用流量管理器。
有关详细信息,请参阅:
全局流量视图
使用流量管理器中的流量视图查看流量模式和延迟指标。 流量视图可帮助你计划将占用空间扩展到新的 Azure 区域。
有关详细信息,请参阅流量管理器流量视图。
应用程序网关
使用应用程序网关 v2 SKU 实现直接自动复原。
应用程序网关 v2 SKU 可以自动确保新实例在各个容错域和更新域中生成。 如果选择了区域冗余,则最新实例还将在各个可用性区域中生成,以实现容错。
如果已部署两个或更多实例,则应用程序网关 v1 SKU 支持高可用性方案。 Azure 将跨更新域和容错域分配这些实例,确保实例不会同时发生故障。 为了支持可伸缩性,v1 SKU 将添加同一网关的多个实例来分担负载。
应用程序网关需要信任 Azure 防火墙的 CA 证书。
Azure 防火墙
在此设计中,需要 Azure 防火墙高级层才能提供 TLS 检查。 Azure 防火墙将截获应用程序网关与生成自己证书的 Web 层虚拟机之间的 TLS 会话,并检查从虚拟网络到公共 Internet 的出站流量流。 有关此设计的详细信息,请参阅使用 Azure 防火墙和应用程序网关实现 Web 应用程序的零信任网络。
运行状况探测建议
下面是关于流量管理器、应用程序网关和负载均衡器中运行状况探测的一些建议。
流量管理器
终结点运行状况 - 创建一个终结点,用于报告应用程序的总体运行状况。 流量管理器使用 HTTP(S) 探测来监视每个区域的可用性。 探测检查指定 URL 路径的 HTTP 200 响应。 使用为运行状况探测创建的终结点。 否则,探测可能会在应用程序的关键部分出现故障时报告终结点运行状况正常。
有关详细信息,请参阅运行状况终结点监视模式。
故障转移延迟 - 流量管理器有故障转移延迟。 以下因素决定了延迟的持续时间:
- 探测间隔:探测检查终结点运行状况的频率。
- 允许的失败次数:在将终结点标记为运行不正常之前,探测可容忍的故障次数。
- 探测超时:流量管理器确认终结点运行不正常所需的时间。
- 生存时间 (TTL):DNS 服务器必须更新 IP 地址的已缓存 DNS 记录。 所需时间取决于 DNS TTL。 默认 TTL 为 300 秒(5 分钟),但可以在创建流量管理器配置文件时配置此值。
有关详细信息,请参阅流量管理器监视。
应用程序网关和负载均衡器
熟悉应用程序网关和负载均衡器的运行状况探测策略,以确保了解 VM 的运行状况。 下面是简要概述:
应用程序网关始终使用 HTTP 探测。
负载均衡器可以评估 HTTP 或 TCP。 如果 VM 运行 HTTP 服务器,请使用 HTTP 探测。 对于其他情况,请使用 TCP。
HTTP 探测将 HTTP GET 请求发送到指定路径并侦听 HTTP 200 响应。 此路径可以是根路径(“/”),也可以是一个运行状况监视终结点,该终结点实现自定义逻辑来检查应用程序运行状况。
终结点必须允许匿名 HTTP 请求。 如果探测在超时期限内无法到达实例,应用程序网关或负载均衡器会停止向该 VM 发送流量。 如果该 VM 再次可用,探测将继续检查,并将 VM 返回到后端池。
有关详细信息,请参阅:
卓越运营
资源组 - 使用资源组按生存期、所有者和其他特征管理 Azure 资源。
虚拟网络对等互连 - 使用虚拟网络对等互连可以无缝连接 Azure 中的两个或更多虚拟网络。 出于连接目的,两个虚拟网络会显示为一个。 对等互连虚拟网络中虚拟机之间的流量使用 Microsoft 主干基础结构。 确保虚拟网络的地址空间不会重叠。
虚拟网络和子网 - 为子网的每个层创建一个单独的子网。 应将 VM 和资源(例如应用程序网关和负载均衡器)部署到包含子网的虚拟网络中。
安全性
Web 应用程序防火墙 - Azure 应用程序网关的 WAF 功能将在 HTTP 级别检测和防止攻击,例如 SQL 注入 (SQLi) 或跨站点脚本 (CSS)。
下一代防火墙 - Azure 防火墙高级版通过检查内容是否包含非 Web 攻击(例如通过 HTTP(S) 或任何其他协议上传的恶意文件)提供额外的防御层。
端到端加密 - 遍历 Azure 网络时,流量会始终加密。 应用程序网关和 Azure 防火墙会先加密流量,然后再将其发送到相应的后端系统。
分布式拒绝服务 (DDoS) - 使用 Azure DDoS 网络保护实现比 Azure 提供的基本防护更强大的 DDoS 防护。
网络安全组 (NSG):使用 NSG 来限制虚拟网络中的网络流量。 例如,在此处显示的三层体系结构中,数据层仅接受来自业务层的流量,而不接受来自 Web 前端的流量。 只有业务层可以直接与数据库层通信。 为强制实施此规则,数据库层应当阻止除业务层子网之外的所有传入流量。
- 允许来自业务层子网的入站流量。
- 允许来自数据库层子网本身的入站流量。 此规则允许在数据库 VM 之间通信。 进行数据库复制和故障转移需要此规则。
- 通过使用规则中的
VirtualNetwork
标记覆盖默认 NSG 规则中包含的 permit 语句,拒绝来自虚拟网络的所有入站流量。
创建优先级低于规则 1 的规则 3(编号更大)。
可以在网络安全组或 Azure 防火墙中使用服务标记来定义网络访问控制。
有关详细信息,请参阅应用程序网关基础结构配置。
成本优化
有关详细信息,请参阅:
性能效率
虚拟机规模集 - 使用虚拟机规模集自动实现虚拟机的可伸缩性。 虚拟机规模集适用于所有 Windows 和 Linux 虚拟机大小。 只需为部署的虚拟机以及消耗的底层基础结构资源付费。 没有增量费用。 虚拟机规模集的好处是:
- 轻松创建和管理多个虚拟机
- 高可用性和应用程序复原能力
- 随着资源需求的变化自动缩放
有关详细信息,请参阅虚拟机规模集。
后续步骤
有关使用相同技术的更多参考体系结构,请参阅: