Упражнение. Создание и настройка шлюза приложений
Шлюз приложений прослушивает конечную точку для входящих запросов, а затем пересылает эти запросы на один из веб-серверов в серверном пуле. Вы предоставите конфигурацию, которая описывает, как Шлюз приложений направляет трафик и как балансировать запросы нагрузки на веб-серверах.
В системе отдела автомобилей необходимо настроить Шлюз приложений для балансировки нагрузки входящих запросов на веб-серверах, на котором размещено веб-приложение регистрации автомобиля. Кроме того, необходимо настроить Шлюз приложений для обнаружения сбоя любого из веб-серверов, чтобы он смог перенаправить трафик на рабочий сервер. Кроме того, необходимо настроить маршрутизацию на основе путей для отправки запросов на сайты регистрации транспортных средств и продления лицензий в соответствующие серверные веб-службы.
В этом упражнении вы создадите экземпляр Шлюза приложений с помощью пула веб-серверов. Вы убедитесь, что в Шлюзе приложений настроен соответствующий прослушиватель для обработки входящих HTTP-запросов, и запросы перенаправляются на работающий веб-сервер.
Настройка сети для Шлюза приложений
Чтобы создать частную подсеть, необходимую для Шлюза приложений, выполните следующую команду. Подсеть имеет имя
appGatewaySubnet
в виртуальной сетиvehicleAppVnet
, которую вы создали в предыдущем упражнении.az network vnet subnet create \ --resource-group $RG \ --vnet-name vehicleAppVnet \ --name appGatewaySubnet \ --address-prefixes 10.0.0.0/24
Чтобы создать общедоступный IP-адрес и DNS-метку для Шлюза приложений, выполните следующую команду. Эта метка DNS должна быть уникальной глобально. Для создания метки в следующем коде используется функция
$RANDOM
.az network public-ip create \ --resource-group $RG \ --name appGatewayPublicIp \ --sku Standard \ --dns-name vehicleapp${RANDOM}
Создание Шлюза приложений
Сначала используйте следующую команду, чтобы создать политику WAF:
az network application-gateway waf-policy create \ --name waf-pol \ --resource-group $RG \ --type OWASP \ --version 3.2
Используйте следующую команду, чтобы создать шлюз приложений с именем
vehicleAppGateway
следующей конфигурации:- Серверный пул, содержащий IP-адреса виртуальных машин веб-сервера.
- Брандмауэр, блокирующий вредоносные запросы, которые используются в атаках с использованием внедрения SQL-кода и межсайтовых сценариев.
- Временный прослушиватель, прослушивающий порт 8080. Этот прослушиватель будет заменен позднее, хотя он необходим для создания Шлюза приложений.
- Правило, которое определяет маршрут (и балансирует нагрузку) запросов на веб-серверы пула.
az network application-gateway create \ --resource-group $RG \ --name vehicleAppGateway \ --sku WAF_v2 \ --capacity 2 \ --vnet-name vehicleAppVnet \ --subnet appGatewaySubnet \ --public-ip-address appGatewayPublicIp \ --http-settings-protocol Http \ --http-settings-port 8080 \ --private-ip-address 10.0.0.4 \ --frontend-port 8080 \ --waf-policy waf-pol \ --priority 100
Примечание.
Выполнение этой команды может занять несколько минут.
Чтобы найти частные IP-адреса
webServer1
иwebServer2
выполните следующие команды:az vm list-ip-addresses \ --resource-group $RG \ --name webServer1 \ --query [0].virtualMachine.network.privateIpAddresses[0] \ --output tsv
az vm list-ip-addresses \ --resource-group $RG \ --name webserver2 \ --query [0].virtualMachine.network.privateIpAddresses[0] \ --output tsv
Далее для каждого веб-сайта мы добавим серверные пулы. Сначала создайте внутренний пул для сайта регистрации транспортных средств, работающего на виртуальных машинах. Убедитесь, что IP-адреса в приведенной ниже команде соответствуют IP-адресам, которые содержались в выходных данных предыдущих команд.
az network application-gateway address-pool create \ --gateway-name vehicleAppGateway \ --resource-group $RG \ --name vmPool \ --servers 10.0.1.4 10.0.1.5
Чтобы создать внутренний пул для сайта продления лицензии, работающего на Служба приложений, выполните следующую команду:
az network application-gateway address-pool create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name appServicePool \ --servers $APPSERVICE.azurewebsites.net
Для порта 80 создайте интерфейсный порт:
az network application-gateway frontend-port create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name port80 \ --port 80
Чтобы обрабатывать запросы через порт 80, создайте прослушиватель:
az network application-gateway http-listener create \ --resource-group $RG \ --name vehicleListener \ --frontend-port port80 \ --frontend-ip appGatewayFrontendIP \ --gateway-name vehicleAppGateway
Добавление пробы работоспособности
Создайте функцию проверки работоспособности, которая протестирует веб-сервер на доступность. Проверка работоспособности выполняется каждые 15 секунд (
--interval 15
) и отправляет HTTP-запрос GET по корневому пути веб-приложения. Если веб-приложение не отвечает в течение 10 секунд (--timeout 10
), время ожидания пробы истекает. Веб-сервер помечается как неработоспособный, если проба завершается сбоем три раза в последовательности (--threshold 3
).Так как вы используете Служба приложений в качестве одного из внутренних серверов, вы задали заголовок узла в имя Служба приложений. Без этого параметра Служба приложений не будет отвечать и будет отображаться как неработоспособная.
az network application-gateway probe create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name customProbe \ --path / \ --interval 15 \ --threshold 3 \ --timeout 10 \ --protocol Http \ --host-name-from-http-settings true
Затем, чтобы использовать созданную пробу работоспособности, создайте параметры HTTP для шлюза:
az network application-gateway http-settings create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name appGatewayBackendHttpSettings \ --host-name-from-backend-pool true \ --port 80 \ --probe customProbe
Настройка маршрутизации на основе путей
Теперь для нашего Шлюза приложений нужно настроить маршрутизацию на основе пути. Мы направим запросы с частью пути /VehicleRegistration/ на vmPool, а запросы с частью пути /LicenseRenewal/ — на appServicePool. Все запросы без какого-либо URL-контекста будут перенаправляться на vmPool по умолчанию.
Чтобы создать карту пути для vmPool, выполните следующую команду:
az network application-gateway url-path-map create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name urlPathMap \ --paths /VehicleRegistration/* \ --http-settings appGatewayBackendHttpSettings \ --default-http-settings appGatewayBackendHttpSettings \ --address-pool vmPool \ --default-address-pool vmPool
Чтобы создать правило сопоставления пути для appServicePool, выполните следующую команду:
az network application-gateway url-path-map rule create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name appServiceUrlPathMap \ --paths /LicenseRenewal/* \ --http-settings appGatewayBackendHttpSettings \ --address-pool appServicePool \ --path-map-name urlPathMap
Теперь создайте новое правило маршрутизации с помощью созданной карты пути:
az network application-gateway rule create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name appServiceRule \ --priority 200 \ --http-listener vehicleListener \ --rule-type PathBasedRouting \ --address-pool appServicePool \ --url-path-map urlPathMap
Последняя часть конфигурации — удалить правило, созданное при первоначальном развертывании Шлюз приложений. Настраиваемое правило больше не понадобится.
az network application-gateway rule delete \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name rule1
Когда все настроено, следует проверить работоспособность.