Quickstart: Direct web traffic with Azure Application Gateway — Azure CLI (Краткое руководство. Направление веб-трафика с помощью шлюза приложений Azure (Azure CLI))

В этом кратком руководстве рассказывается о том, как создать шлюз приложений с помощью Azure CLI, а затем протестировать его, чтобы убедиться в его правильной работе.

Шлюз приложений направляет веб-трафик приложений на определенные ресурсы в серверном пуле. Вы назначаете прослушиватели портам, создаете правила и добавляете ресурсы в серверный пул. Для простоты в этой статье используется простая настройка с общедоступным внешним IP-адресом, базовым прослушивателем для размещения одного сайта в шлюзе приложений, базового правила маршрутизации запросов и двух виртуальных машин в серверном пуле.

application gateway resources

Инструкции в этом кратком руководстве можно также выполнить с помощью Azure PowerShell или портала Azure.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Необходимые компоненты

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

  • Для работы с этой статьей требуется Azure CLI версии 2.0.4 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.

Создать группу ресурсов

В Azure выделите связанные ресурсы группе ресурсов. Создайте группу ресурсов с помощью az group create.

В следующем примере создается группа ресурсов с именем myResourceGroupAG в расположении eastus.

az group create --name myResourceGroupAG --location eastus

Создание сетевых ресурсов

В Azure для обмена между создаваемыми ресурсами необходима виртуальная сеть. Подсеть шлюза приложений может содержать только шлюзы приложений. Другие ресурсы запрещены. Вы можете создать новую подсеть для шлюза приложений или использовать уже существующую. В этом примере создаются две подсети: одна — для шлюза приложений, а вторая — для внутренних серверов. Вы можете настроить интерфейсный IP-адрес как общедоступный или частный, в зависимости от варианта использования шлюза приложений. В этом примере мы будем использовать общедоступный интерфейсный IP-адрес.

Примечание.

интерфейс Шлюз приложений теперь поддерживает IP-адреса с двумя стеками (общедоступная предварительная версия). Теперь можно создать до четырех внешних IP-адресов: два IPv4-адреса (общедоступные и частные) и два IPv6-адреса (общедоступные и частные).

Чтобы создать виртуальную сеть и подсеть, используйте az network vnet create. Воспользуйтесь командой az network public-ip create, чтобы создать общедоступный IP-адрес.

az network vnet create \
  --name myVNet \
  --resource-group myResourceGroupAG \
  --location eastus \
  --address-prefix 10.21.0.0/16 \
  --subnet-name myAGSubnet \
  --subnet-prefix 10.21.0.0/24
az network vnet subnet create \
  --name myBackendSubnet \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet   \
  --address-prefix 10.21.1.0/24
az network public-ip create \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --allocation-method Static \
  --sku Standard

Создайте внутренние серверы.

Серверная часть может иметь сетевые адаптеры, масштабируемые наборы виртуальных машин, общедоступные IP-адреса, внутренние IP-адреса, полные доменные имена (FQDN) и мультитенантные серверные серверы, такие как служба приложение Azure. В этом примере вы создадите две виртуальные машины, которые будут использоваться как внутренние серверы для шлюза приложений. Вы также устанавливаете NGINX на виртуальных машинах для тестирования шлюза приложений.

Создание двух виртуальных машин

Чтобы убедиться в успешном создании шлюза приложения, установите веб-сервер NGINX на виртуальные машины. Тот же самый файл конфигурации cloud-init можно использовать и для установки NGINX, а также для запуска простого приложения Node.js "Hello World" на виртуальной машине Linux. Дополнительные сведения о cloud-init см. в статье Поддержка cloud-init для виртуальных машин в Azure.

В Azure Cloud Shell создайте файл cloud-init.txt и вставьте в него следующую конфигурацию. Чтобы создать файл, введите editor cloud-init.txt.

#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 Ubuntu2204 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --custom-data cloud-init.txt
done

Создание шлюза приложений

Создайте шлюз приложений с помощью az network application-gateway create. При создании шлюза приложения с помощью Azure CLI укажите такие сведения о конфигурации, как емкость, номер SKU и параметры HTTP. Azure добавляет частные 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 eastus \
  --resource-group myResourceGroupAG \
  --capacity 2 \
  --sku Standard_v2 \
  --public-ip-address myAGPublicIPAddress \
  --vnet-name myVNet \
  --subnet myAGSubnet \
  --servers "$address1" "$address2" \
  --priority 100

Чтобы создать шлюз приложения в Azure, может понадобиться до 30 минут. После его создания в разделе Параметры страницы Шлюз приложений можно просматривать следующие параметры:

  • appGatewayBackendPool: расположен на странице внутренних пулов . Он задает требуемые значения для пулов серверной части.
  • appGatewayBackendHttp Параметры: расположен на странице параметров HTTP. Он указывает, что для связи шлюз приложений использует протокол HTTP и 80 порт.
  • appGatewayHttpListener: расположен на странице прослушивателей. Задает прослушиватель по умолчанию, связанный с appGatewayBackendPool.
  • appGatewayFrontendIP: расположен на странице конфигураций ВНЕШНИХ IP-адресов . Он назначает адрес myAGPublicIPAddress для прослушивателя appGatewayHttpListener.
  • rule1: расположен на странице "Правила ". Указывает правило маршрутизации по умолчанию, связанное с appGatewayHttpListener.

Тестирование шлюза приложений

Несмотря на то что Azure не требует устанавливать веб-сервер NGINX для создания шлюза приложения, в рамках этого руководства он устанавливается, чтобы проверить, создан ли шлюз приложений. Чтобы получить общедоступный IP-адрес нового шлюза приложений, используйте az network public-ip show.

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

Скопируйте и вставьте общедоступный IP-адрес в адресную строку браузера. ​ Test application gateway

Когда вы обновляете браузер, должно отобразиться имя второй виртуальной машины. Это означает, что шлюз приложений успешно создан и может подключиться к серверу.

Очистка ресурсов

Если ресурсы, которые были созданы с помощью шлюза приложения, больше не нужны, воспользуйтесь командой az group delete, чтобы удалить группу ресурсов. Удалив ее, вы также удалите шлюз приложений и все связанные с ним ресурсы.

az group delete --name myResourceGroupAG

Следующие шаги