使用 Azure CLI 创建应用程序网关

可以使用 Azure CLI 通过命令行或脚本创建或管理应用程序网关。 本快速入门演示如何创建网络资源、后端服务器和应用程序网关。

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

如果选择在本地安装并使用 CLI,本快速入门要求运行 Azure CLI 2.0.4 版或更高版本。 若要查找版本,请运行 az --version。 如果需要进行安装或升级,请参阅安装 Azure CLI 2.0

创建资源组

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

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

az group create --name myResourceGroupAG --location chinanorth

创建网络资源

使用 az network vnet create 创建虚拟网络和子网。 使用 az network public-ip create 创建公共 IP 地址。

az network vnet create \
  --name myVNet \
  --resource-group myResourceGroupAG \
  --location chinanorth \
  --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

创建后端服务器

在此示例中,将创建两个虚拟机以用作应用程序网关的后端服务器。 还可以在虚拟机上安装 NGINX,以验证是否已成功创建应用程序网关。

创建两个虚拟机

可使用 cloud-init 配置文件在 Linux 虚拟机上安装 NGINX 并运行“Hello World”Node.js 应用。 在当前 shell 中创建名为“cloud-init.txt”的文件,并将以下配置复制粘贴到 shell。 请确保正确复制整个 cloud-init 文件,尤其是第一行:

#cloud-config
package_upgrade: true
packages:
  - nginx
  - nodejs
  - npm
write_files:
  - owner: www-data:www-data
  - path: /etc/nginx/sites-available/default
    content: |
      server {
        listen 80;
        location / {
          proxy_pass http://localhost:3000;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection keep-alive;
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
        }
      }
  - owner: azureuser:azureuser
  - path: /home/azureuser/myapp/index.js
    content: |
      var express = require('express')
      var app = express()
      var os = require('os');
      app.get('/', function (req, res) {
        res.send('Hello World from host ' + os.hostname() + '!')
      })
      app.listen(3000, function () {
        console.log('Hello world app listening on port 3000!')
      })
runcmd:
  - service nginx restart
  - cd "/home/azureuser/myapp"
  - npm init
  - npm install express -y
  - nodejs index.js

使用 az network nic create 创建网络接口。 使用 az vm create 创建虚拟机。

for i in `seq 1 2`; do
  az network nic create \
    --resource-group myResourceGroupAG \
    --name myNic$i \
    --vnet-name myVNet \
    --subnet myBackendSubnet
  az vm create \
    --resource-group myResourceGroupAG \
    --name myVM$i \
    --nics myNic$i \
    --image UbuntuLTS \
    --admin-username azureuser \
    --generate-ssh-keys \
    --custom-data cloud-init.txt
done

创建应用程序网关

使用 az network application-gateway create 创建应用程序网关。 使用 Azure CLI 创建应用程序网关时,请指定配置信息,例如容量、sku 和 HTTP 设置。 将添加网络接口的专用 IP 地址作为应用程序网关后端池中的服务器。

address1=$(az network nic show --name myNic1 --resource-group myResourceGroupAG | grep "\"privateIpAddress\":" | grep -oE '[^ ]+$' | tr -d '",')
address2=$(az network nic show --name myNic2 --resource-group myResourceGroupAG | grep "\"privateIpAddress\":" | grep -oE '[^ ]+$' | tr -d '",')
az network application-gateway create \
  --name myAppGateway \
  --location chinanorth \
  --resource-group myResourceGroupAG \
  --capacity 2 \
  --sku Standard_Medium \
  --http-settings-cookie-based-affinity Enabled \
  --public-ip-address myAGPublicIPAddress \
  --vnet-name myVNet \
  --subnet myAGSubnet \
  --servers "$address1" "$address2"

创建应用程序网关可能需要几分钟时间。 创建应用程序网关后,可以看到它的这些功能:

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

测试应用程序网关

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

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

测试应用程序网关

清理资源

如果不再需要资源组、应用程序网关和所有相关资源,可以使用 az group delete 命令将其删除。

az group delete --name myResourceGroupAG

后续步骤

在本快速入门中,创建了资源组、网络资源和后端服务器。 然后可以使用这些资源来创建应用程序网关。 若要了解有关应用程序网关及其关联资源的详细信息,请继续阅读操作指南文章。