通过 Azure CLI 使用应用程序网关管理 Web 流量

应用程序网关用于管理和保护传入你维护的服务器的 Web 流量。 可以使用 Azure CLI 创建使用虚拟机规模集作为后端服务器的应用程序网关。 在此示例中,规模集包含两个虚拟机实例。 规模集将添加到应用程序网关的默认后端池。

在本文中,学习如何:

  • 设置网络
  • 创建应用程序网关
  • 使用默认后端池创建虚拟机规模集

如果需要,可以使用 Azure PowerShell 完成此过程。

如果没有 Azure 订阅,可在开始前创建一个试用帐户

先决条件

  • 如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

    • 如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

  • 本教程需要 Azure CLI 版本 2.0.4 或更高版本。

创建资源组

资源组是在其中部署和管理 Azure 资源的逻辑容器。 使用 az group create 创建资源组。

以下示例在“chinanorth2” 位置创建名为“myResourceGroupAG” 的资源组。

az group create --name myResourceGroupAG --location chinanorth2

创建网络资源

使用 az network vnet create 创建名为 myVNet 的虚拟网络和名为 myAGSubnet 的子网。 然后,可以使用 az network vnet subnet create 添加后端服务器所需的名为 myBackendSubnet 的子网。 使用 az network public-ip create 创建名为 myAGPublicIPAddress 的公共 IP 地址。

az network vnet create \
 --name myVNet \
 --resource-group myResourceGroupAG \
 --location chinanorth2 \
 --address-prefix 10.0.0.0/16 \
 --subnet-name myAGSubnet \
 --subnet-prefix 10.0.1.0/24

az network vnet subnet create \
 --name myBackendSubnet \
 --resource-group myResourceGroupAG \
 --vnet-name myVNet \
 --address-prefix 10.0.2.0/24

az network public-ip create \
 --resource-group myResourceGroupAG \
 --name myAGPublicIPAddress \
 --allocation-method Static \
 --sku Standard

创建应用程序网关

使用 az network application-gateway create 创建名为 myAppGateway 的应用程序网关。 使用 Azure CLI 创建应用程序网关时,请指定配置信息,例如容量、sku 和 HTTP 设置。 将应用程序网关分配给之前创建的 myAGSubnetmyPublicIPAddress

az network application-gateway create \
 --name myAppGateway \
 --location chinanorth2 \
 --resource-group myResourceGroupAG \
 --vnet-name myVNet \
 --subnet myAGsubnet \
 --capacity 2 \
 --sku Standard_v2 \
 --http-settings-cookie-based-affinity Disabled \
 --frontend-port 80 \
 --http-settings-port 80 \
 --http-settings-protocol Http \
 --public-ip-address myAGPublicIPAddress \
 --priority 100

创建应用程序网关可能需要几分钟时间。 创建应用程序网关后,会看到以下新功能:

  • appGatewayBackendPool - 应用程序网关必须至少具有一个后端地址池。
  • appGatewayBackendHttpSettings - 指定将端口 80 和 HTTP 协议用于通信。
  • appGatewayHttpListener - 与 appGatewayBackendPool 关联的默认侦听器。
  • appGatewayFrontendIP - 将 myAGPublicIPAddress 分配给 appGatewayHttpListener
  • rule1 - 与 appGatewayHttpListener 关联的默认路由规则。

创建虚拟机规模集

在此示例中,将创建虚拟机规模集,以便为应用程序网关的后端池提供服务器。 规模集中的虚拟机与 myBackendSubnetappGatewayBackendPool 相关联。 若要创建规模集,请使用 az vmss create

az vmss create \
 --name myvmss \
 --resource-group myResourceGroupAG \
 --image Ubuntu2204 \
 --admin-username azureuser \
 --admin-password Azure123456! \
 --instance-count 2 \
 --vnet-name myVNet \
 --subnet myBackendSubnet \
 --vm-sku Standard_DS2 \
 --upgrade-policy-mode Automatic \
 --app-gateway myAppGateway \
 --backend-pool-name appGatewayBackendPool

安装 NGINX

现在,可以在虚拟机规模集上安装 NGINX,以便测试与后端池的 HTTP 连接。

az vmss extension set \
 --publisher Microsoft.Azure.Extensions \
 --version 2.0 \
 --name CustomScript \
 --resource-group myResourceGroupAG \
 --vmss-name myvmss \
 --settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"], "commandToExecute": "./install_nginx.sh" }'

测试应用程序网关

若要获取应用程序网关的公共 IP 地址,请使用 az network public-ip show。 复制该公共 IP 地址,并将其粘贴到浏览器的地址栏。

az network public-ip show \
 --resource-group myResourceGroupAG \
 --name myAGPublicIPAddress \
 --query [ipAddress] \
 --output tsv

Test base URL in application gateway

清理资源

当不再需要资源组、应用程序网关以及所有相关资源时,请将其删除。

az group delete --name myResourceGroupAG --location chinanorth2

后续步骤

使用 Web 应用程序防火墙限制 Web 流量