Поделиться через


Руководство по созданию шлюза приложений с перенаправлением на основе URL-пути при помощи Azure CLI

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

В этом руководстве описано следующее:

  • Настройка сети
  • Создание Шлюза приложений
  • добавление прослушивателей и правил маршрутизации;
  • создание масштабируемых наборов виртуальных машин для внутренних пулов.

Ниже приведен пример трафика сайта. Трафик поступает из портов 8080 и 8081 и перенаправляется в те же внутренние пулы.

Пример маршрутизации URL-адресов шлюза приложений.

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

Если у вас еще нет подписки 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

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

Создайте виртуальную сеть с именем myVNet и подсеть myAGSubnet с помощью команды az network vnet create. Затем добавьте подсеть с именем myBackendSubnet, необходимую для внутренних серверов, используя команду az network vnet subnet create. Создайте общедоступный IP-адрес с именем myAGPublicIPAddress, используя команду az network public-ip create.

az network vnet create \
  --name myVNet \
  --resource-group myResourceGroupAG \
  --location eastus \
  --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. Шлюз приложений назначается подсети myAGSubnet и адресу myPublicIPAddressddress, созданным ранее.

az network application-gateway create \
  --name myAppGateway \
  --location eastus \
  --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.

Добавление внутренних пулов и портов

Вы можете добавить в шлюз приложений внутренние пулы адресов с именами imagesBackendPool и videoBackendPool с помощью команды az network application-gateway address-pool create. Интерфейсные порты для пулов можно добавить при помощи команды az network application-gateway frontend-port create.

az network application-gateway address-pool create \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name imagesBackendPool

az network application-gateway address-pool create \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name videoBackendPool

az network application-gateway frontend-port create \
  --port 8080 \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name bport

az network application-gateway frontend-port create \
  --port 8081 \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name rport

Добавление прослушивателей и правил

Добавление прослушивателей

Добавьте серверные прослушиватели с именами backendListener и redirectedListener, необходимые для маршрутизации трафика, при помощи команды az network application-gateway http-listener create.

az network application-gateway http-listener create \
  --name backendListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port bport \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway

az network application-gateway http-listener create \
  --name redirectedListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port rport \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway

Добавление сопоставления URL-путей по умолчанию

Сопоставления URL-путей гарантируют, что определенные URL-адреса маршрутизируются в определенные внутренние пулы. Вы можете создать сопоставления URL-путей с именами imagePathRule и videoPathRule при помощи команд az network application-gateway url-path-map create и az network application-gateway url-path-map rule create.

az network application-gateway url-path-map create \
  --gateway-name myAppGateway \
  --name urlpathmap \
  --paths /images/* \
  --resource-group myResourceGroupAG \
  --address-pool imagesBackendPool \
  --default-address-pool appGatewayBackendPool \
  --default-http-settings appGatewayBackendHttpSettings \
  --http-settings appGatewayBackendHttpSettings \
  --rule-name imagePathRule

az network application-gateway url-path-map rule create \
  --gateway-name myAppGateway \
  --name videoPathRule \
  --resource-group myResourceGroupAG \
  --path-map-name urlpathmap \
  --paths /video/* \
  --address-pool videoBackendPool

Добавление конфигурации перенаправления

Можно настроить перенаправление для прослушивателя с помощью команды az network application-gateway redirect-config create.

az network application-gateway redirect-config create \
  --gateway-name myAppGateway \
  --name redirectConfig \
  --resource-group myResourceGroupAG \
  --type Found \
  --include-path true \
  --include-query-string true \
  --target-listener backendListener

Добавление сопоставления URL-путей для перенаправления

az network application-gateway url-path-map create \
  --gateway-name myAppGateway \
  --name redirectpathmap \
  --paths /images/* \
  --resource-group myResourceGroupAG \
  --redirect-config redirectConfig \
  --rule-name redirectPathRule

Добавление правил маршрутизации

Правила маршрутизации связывают сопоставления URL-путей с созданными прослушивателями. Вы можете добавить правила defaultRule и redirectedRule с помощью команды az network application-gateway rule create.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name defaultRule \
  --resource-group myResourceGroupAG \
  --http-listener backendListener \
  --rule-type PathBasedRouting \
  --url-path-map urlpathmap \
  --address-pool appGatewayBackendPool \
  --priority 100

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name redirectedRule \
  --resource-group myResourceGroupAG \
  --http-listener redirectedListener \
  --rule-type PathBasedRouting \
  --url-path-map redirectpathmap \
  --address-pool appGatewayBackendPool \
  --priority 100

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

В этом примере вы создадите три масштабируемых набора виртуальных машин, которые поддерживают три созданных внутренних пула. Имена создаваемых масштабируемых наборов — myvmss1, myvmss2 и myvmss3. Каждый масштабируемый набор содержит два экземпляра виртуальной машины, на которых устанавливаются службы NGINX.

Замените <azure-user> и <пароль> именем пользователя и паролем по своему усмотрению.

for i in `seq 1 3`; do
  if [ $i -eq 1 ]
  then
    poolName="appGatewayBackendPool"
  fi
  if [ $i -eq 2 ]
  then
    poolName="imagesBackendPool"
  fi
  if [ $i -eq 3 ]
  then
    poolName="videoBackendPool"
  fi

  az vmss create \
    --name myvmss$i \
    --resource-group myResourceGroupAG \
    --image Ubuntu2204 \
    --admin-username <azure-user> \
    --admin-password <password> \
    --instance-count 2 \
    --vnet-name myVNet \
    --subnet myBackendSubnet \
    --vm-sku Standard_DS2 \
    --upgrade-policy-mode Automatic \
    --app-gateway myAppGateway \
    --backend-pool-name $poolName
done

Установка nginx

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

done

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

Чтобы получить общедоступный IP-адрес шлюза приложений, используйте команду az network public-ip show. Скопируйте общедоступный IP-адрес и вставьте его в адресную строку браузера. Например, http://40.121.222.19, http://40.121.222.19:8080/images/test.htm, http://40.121.222.19:8080/video/test.htm или http://40.121.222.19:8081/images/test.htm.

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

Тестирование базового URL-адреса в шлюзе приложений

Измените URL-адрес на http://<ip-address>:8080/images/test.html, указав вместо заполнителя <ip-address> фактический IP-адрес. Результат должен быть примерно таким:

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

Измените URL-адрес на http://<ip-address>:8080/video/test.html, указав вместо заполнителя <ip-address> фактический IP-адрес. Результат должен быть примерно таким:

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

Теперь измените URL-адрес на http://<ip-address>:8081/images/test.html, заменив <ip-address> своим IP-адресом. Вы увидите, что трафик перенаправляется обратно во внутренний пул образов по адресу http://<ip-address>:8080/images.

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

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

az group delete --name myResourceGroupAG

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