应用程序网关创建和配置

已完成

应用程序网关包含一系列组件,这些组件结合在一起将请求路由到 Web 服务器池,并检查这些 Web 服务器的运行状况。 我们来看看这些组件的相关性以及它们在应用程序网关中扮演的角色。

Diagram with a visualization of the Application Gateway components.

前端 IP 地址

通过“前端 IP 地址”接收客户端请求。 你可以将应用程序网关配置为具有公共 IP 地址和/或专用 IP 地址。 应用程序网关不能具有多个公共和多个专用 IP 地址。

侦听器

应用程序网关使用一个或多个“侦听器”接收传入的请求。 侦听器接受到达指定协议、端口、主机和 IP 地址组合的流量。 每个侦听器按照你指定的路由规则将请求路由到后端服务器池。 侦听器可以是“基本侦听器”,也可以是“多站点侦听器”。 基本侦听器仅根据 URL 中的路径路由请求。 多站点侦听器还可以使用 URL 的主机名元素路由请求。

侦听器还会处理用于保护用户和应用程序网关之间应用程序的 SSL 证书。

路由规则

“路由规则”将侦听器绑定到后端池。 规则指定如何解释请求的 URL 中的主机名和路径元素,以及如何将请求定向到相应的后端池。 路由规则还具有一组关联的 HTTP 设置。 这些设置指示是否(以及如何)加密应用程序网关与后端服务器之间的流量,并指示其他配置信息,如:

  • 协议(HTTP 或 HTTPS)。
  • 会话粘性,将某个客户端会话中的所有请求传递到同一个 Web 服务器,而不是通过负载均衡将它们分散到各服务器。
  • 连接排出,从后端池中正常移除服务器。
  • 请求超时期限,以秒为单位。
  • 运行状况探测,指定探测 URL、超时期限以及用于确定某个服务器在后端池中是否可用的其他参数。

后端池

“后端池”指 Web 服务器集合。 配置池时,需要提供每个 Web 服务器的 IP 地址以及侦听请求的端口。 每个池可以指定一组固定的虚拟机、虚拟机规模集、由 Azure 应用服务托管的应用或本地服务器集合。 每个后端池具有关联的负载均衡器,用于将负载分散到池中

Web 应用程序防火墙

“Web 应用程序防火墙”(WAF) 是一个可选组件,用于在传入的请求到达侦听器之前对其进行处理。 Web 应用程序防火墙根据“开放 Web 应用程序安全项目”(OWASP) 检查每个请求是否存在常见威胁。 其中包括:

  • SQL 注入
  • 跨站点脚本
  • 命令注入
  • HTTP 请求走私
  • HTTP 响应拆分
  • 远程文件包含
  • 自动程序、爬网程序和扫描程序
  • HTTP 协议冲突和异常

OWASP 定义了一组名为核心规则集 (CRS) 的通用规则来检测攻击。 随着攻击越来越复杂,规则集也越来越完善。 WAF 支持两个规则集:CRS 2.2.9 和 CRS 3.0。 CRS 3.0 版本更新,是默认的规则集。 如有必要,你可以仅选择规则集中的某些特定规则,以应对某些威胁。 此外,你可以自定义防火墙,以指定请求中要检查的元素,并限制消息的大小以防止上传量过大导致服务器崩溃。

创建网关时,可以通过选择 WAF 层在应用程序网关上启用 WAF。

运行状况探测

运行状况探测是协助负载均衡器确定哪些服务器可在后端池中进行负载均衡的重要元素。 应用程序网关使用运行状况探测将请求发送到服务器。 如果服务器返回状态代码为 200 至 399 的 HTTP 响应,则认为服务器正常运行。

如果未配置运行状况探测,应用程序网关将创建在决定服务器不可用之前等待 30 秒的默认探测。

应用程序网关网络要求

应用程序网关要求运营虚拟网络。 设置应用程序网关之前,必须创建此虚拟网络和专用子网。 应用程序网关提供大量专用地址供内部使用,并用于在网关横向扩展时与每个实例通信。例如,如果你计划横向扩展到四个实例,则创建一个大小为 /28 的子网。 如果你需要扩展到更多实例,则创建一个更大的子网。

你可以通过公共 IP 地址公开应用程序网关,也可以通过在虚拟网络中只提供专用 IP 来保持它的专用性。 如果你希望在内部站点使用应用程序网关来提供负载均衡,这将很有帮助。

应用程序网关选项

你可以在“标准”层或“WAF”层上创建应用程序网关。 你还可以选择三种规模,这些规模的性能、定价和可伸缩性各不相同:小型、中型和大型。

“标准”层和“WAF”层有两个版本:V1 和 V2。 V2 支持 Azure 可用性区域,但目前处于预览状态。

应用程序网关支持手动缩放和自动缩放。 如果选择自动缩放,应用程序网关会根据应用程序流量自动横向扩展和缩小。 你可以限制应用程序网关实例的最大和最小数量。

创建和配置网关

你可以使用 Azure 门户、Azure PowerShell 或 Azure CLI 创建和配置应用程序网关。 对于 Azure CLI,请使用 az network application-gateway create 命令创建一个新的网关。 如果更喜欢 PowerShell,也可以使用 New-AzApplicationGateway cmdlet。 你还可以使用 Azure 门户执行大多数操作。

你可以在 Azure CLI 中使用 az network application-gateway http-listeneraz network application-gateway ruleaz network application-gateway address-poolaz network application-gateway http-settingsaz network application-gateway front-end-port 命令来检查和修改网关中各组件的配置。 Get-AzApplicationGateway*Set-AzApplicationGateway* 系列 cmdlet 提供与 PowerShell 相同的操作。

我们来为部署的机动车部门网站创建和配置应用程序网关。