Маршрутизация веб-трафика на основе URL-адресов с помощью Azure CLI
Как ИТ-администратор управляет веб-трафиком, вы хотите помочь клиентам и пользователям получать необходимые сведения как можно быстрее. Одним из способов оптимизации их условий работы является маршрутизация различных видов веб-трафика к другим ресурсам сервера. В этой статье показано, как с помощью Azure CLI установить и настроить маршрутизацию в Шлюзе приложений для различных типов трафика приложения. После этого трафик будет направляться в другие пулы серверов в зависимости от URL-адреса.
Вы узнаете, как выполнять следующие задачи:
- Создание группы ресурсов для сетевых ресурсов, необходимых
- Создание сетевых ресурсов.
- Создание шлюза приложений для трафика, поступающего из приложения.
- Указание пулов серверов и правил маршрутизации для различных типов трафика.
- Создание масштабируемого набора для каждого пула, чтобы пул мог автоматически масштабироваться.
- Выполнение теста, чтобы проверить, что разные типы трафика направляются в необходимый пул.
Вы также можете выполнить инструкции из этой процедуры, используя 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
Создание сетевых ресурсов
Создайте виртуальную сеть с именем 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
Создание шлюза приложений путем сопоставления URL-адресов
Используйте команду az network application-gateway create
для создания шлюза приложений с именем myAppGateway. При создании шлюза приложений с помощью Azure CLI укажите такие сведения о конфигурации, как емкость, номер SKU и параметры HTTP. Шлюз приложений назначен на адреса myAGSubnet и myAGPublicIPAddress.
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
Создание шлюза приложений может занять несколько минут. Когда шлюз приложений будет создан, вы увидите такие новые функции:
Возможность | Description |
---|---|
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 port8080
Добавление серверного прослушивателя
Добавьте серверный прослушиватель с именем backendListener, необходимый для маршрутизации трафика, используя команду az network application-gateway http-listener create
.
az network application-gateway http-listener create \
--name backendListener \
--frontend-ip appGatewayFrontendIP \
--frontend-port port8080 \
--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 myPathMap \
--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 myPathMap \
--paths /video/* \
--address-pool videoBackendPool \
--http-settings appGatewayBackendHttpSettings
Добавление правила маршрутизации
Правило маршрутизации связывает сопоставления URL-адресов с созданным прослушивателем. Добавьте правило с именем rule2, используя команду az network application-gateway rule create
.
az network application-gateway rule create \
--gateway-name myAppGateway \
--name rule2 \
--resource-group myResourceGroupAG \
--http-listener backendListener \
--rule-type PathBasedRouting \
--url-path-map myPathMap \
--address-pool appGatewayBackendPool \
--priority 200
Создание Масштабируемые наборы виртуальных машин
В этой статье вы создадите три Масштабируемые наборы виртуальных машин, которые поддерживают созданные серверные пулы. Вы создадите масштабируемые наборы с именами myvmss1, myvmss2 и myvmss3. Каждый масштабируемый набор содержит два экземпляра виртуальной машины, на которых устанавливаются службы NGINX.
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 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 $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
.
az network public-ip show \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--query [ipAddress] \
--output tsv
Измените URL-адрес на http://<ip-address>:8080/images/test.html, указав вместо заполнителя <ip-address> фактический IP-адрес. Результат должен быть примерно таким:
Измените URL-адрес на http://<ip-address>:8080/video/test.html, указав вместо заполнителя <ip-address> фактический IP-адрес. Результат должен быть примерно таким.
Очистка ресурсов
При необходимости вы можете удалить группу ресурсов, шлюз приложений и все связанные ресурсы.
az group delete --name myResourceGroupAG
Следующие шаги
Создание шлюза приложений с перенаправлением на основе URL-пути