Краткое руководство. Прямой веб-трафик с Шлюз приложений Azure с помощью Azure PowerShell

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

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

application gateway resources

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

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

Azure Cloud Shell

В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере. Для работы со службами Azure можно использовать Bash или PowerShell с Cloud Shell. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.

Начало работы с Azure Cloud Shell

Вариант Пример и ссылка
Нажмите кнопку Попробовать в правом верхнем углу блока кода или команд. При нажатии кнопки Попробовать код или команда не копируется в Cloud Shell автоматически. Screenshot that shows an example of Try It for Azure Cloud Shell.
Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. Button to launch Azure Cloud Shell.
Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Чтобы использовать Azure Cloud Shell, выполните следующие действия:

  1. Запустите Cloud Shell.

  2. Нажмите кнопку Копировать в блоке кода (или блоке команд), чтобы скопировать код или команду.

  3. Вставьте код или команду в окно сеанса Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.

  4. Нажмите клавишу ВВОД, чтобы запустить код или команду.

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Подключение к Azure

Чтобы подключиться к Azure, выполните Connect-AzAccount.

Создание или изменение группы ресурсов

В Azure выделите связанные ресурсы группе ресурсов. Вы можете выбрать существующую группу ресурсов или создать новую.

Чтобы создать новую группу ресурсов, используйте командлет New-AzResourceGroup.

New-AzResourceGroup -Name myResourceGroupAG -Location eastus

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

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

  1. Создайте конфигурации подсети с помощью New-AzVirtualNetworkSubnetConfig.
  2. Создайте виртуальную сеть с конфигурациями подсетей с помощью New-AzVirtualNetwork.
  3. Создайте общедоступный IP-адрес с помощью New-AzPublicIpAddress.

Примечание.

Политики конечных точек служб для виртуальной сети в настоящее время не поддерживаются в подсети Шлюза приложений.

$agSubnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name myAGSubnet `
  -AddressPrefix 10.21.0.0/24
$backendSubnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name myBackendSubnet `
  -AddressPrefix 10.21.1.0/24
New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myVNet `
  -AddressPrefix 10.21.0.0/16 `
  -Subnet $agSubnetConfig, $backendSubnetConfig
New-AzPublicIpAddress `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myAGPublicIPAddress `
  -AllocationMethod Static `
  -Sku Standard

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

Создание IP-конфигураций и интерфейсного порта

  1. Используйте New-AzApplicationGatewayIPConfiguration, чтобы создать конфигурацию, которая позволяет связать созданную подсеть со шлюзом приложений.
  2. Используйте командлет New-AzApplicationGatewayFrontendIPConfig, чтобы создать конфигурацию, которая позволяет назначить для шлюза приложений созданный вами общедоступный IP-адрес.
  3. Используйте New-AzApplicationGatewayFrontendPort, чтобы назначить порт 80 для доступа к шлюзу приложений.
$vnet   = Get-AzVirtualNetwork -ResourceGroupName myResourceGroupAG -Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name myAGSubnet
$pip    = Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress 
$gipconfig = New-AzApplicationGatewayIPConfiguration `
  -Name myAGIPConfig `
  -Subnet $subnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig `
  -Name myAGFrontendIPConfig `
  -PublicIPAddress $pip
$frontendport = New-AzApplicationGatewayFrontendPort `
  -Name myFrontendPort `
  -Port 80

Примечание.

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

Создание внутреннего пула

  1. Используйте New-AzApplicationGatewayBackendAddressPool, чтобы создать серверный пул для шлюза приложений. Серверный пул пока пуст. Позже вы добавите в него создаваемые сетевые адаптеры внутреннего сервера (см. следующий раздел).
  2. Настройте параметры для серверного пула с помощью New-AzApplicationGatewayBackendHttpSetting.
$backendPool = New-AzApplicationGatewayBackendAddressPool `
  -Name myAGBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSetting `
  -Name myPoolSettings `
  -Port 80 `
  -Protocol Http `
  -CookieBasedAffinity Enabled `
  -RequestTimeout 30

Создание прослушивателя и добавление правила

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

  1. Создайте прослушиватель созданными ранее конфигурацией внешнего интерфейса и интерфейсным портом, используя командлет New-AzApplicationGatewayHttpListener.
  2. Используйте New-AzApplicationGatewayRequestRoutingRule, чтобы создать правило с именем rule1.
$defaultlistener = New-AzApplicationGatewayHttpListener `
  -Name myAGListener `
  -Protocol Http `
  -FrontendIPConfiguration $fipconfig `
  -FrontendPort $frontendport
$frontendRule = New-AzApplicationGatewayRequestRoutingRule `
  -Name rule1 `
  -RuleType Basic `
  -Priority 100 `
  -HttpListener $defaultlistener `
  -BackendAddressPool $backendPool `
  -BackendHttpSettings $poolSettings

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

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

  1. Используйте New-AzApplicationGatewaySku, чтобы задать параметры для шлюза приложений.
  2. Используйте New-AzApplicationGateway, чтобы создать шлюз приложений.
$sku = New-AzApplicationGatewaySku `
  -Name Standard_v2 `
  -Tier Standard_v2 `
  -Capacity 2
New-AzApplicationGateway `
  -Name myAppGateway `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -BackendAddressPools $backendPool `
  -BackendHttpSettingsCollection $poolSettings `
  -FrontendIpConfigurations $fipconfig `
  -GatewayIpConfigurations $gipconfig `
  -FrontendPorts $frontendport `
  -HttpListeners $defaultlistener `
  -RequestRoutingRules $frontendRule `
  -Sku $sku

Внутренние серверы

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

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

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

  1. Получите недавно созданную конфигурацию серверного пула Шлюза приложений с помощью Get-AzApplicationGatewayBackendAddressPool.
  2. Создайте сетевой интерфейс с помощью New-AzNetworkInterface.
  3. Создайте конфигурацию виртуальной машины с помощью New-AzVMConfig.
  4. Создайте виртуальную машину с помощью New-AzVM.

Во время запуска следующего примера кода для создания виртуальных машин Azure запрашивает ваши учетные данные. Введите имя пользователя и пароль:

$appgw = Get-AzApplicationGateway -ResourceGroupName myResourceGroupAG -Name myAppGateway
$backendPool = Get-AzApplicationGatewayBackendAddressPool -Name myAGBackendPool -ApplicationGateway $appgw
$vnet   = Get-AzVirtualNetwork -ResourceGroupName myResourceGroupAG -Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name myBackendSubnet
$cred = Get-Credential
for ($i=1; $i -le 2; $i++)
{
  $nic = New-AzNetworkInterface `
    -Name myNic$i `
    -ResourceGroupName myResourceGroupAG `
    -Location EastUS `
    -Subnet $subnet `
    -ApplicationGatewayBackendAddressPool $backendpool
  $vm = New-AzVMConfig `
    -VMName myVM$i `
    -VMSize Standard_DS2_v2
  Set-AzVMOperatingSystem `
    -VM $vm `
    -Windows `
    -ComputerName myVM$i `
    -Credential $cred
  Set-AzVMSourceImage `
    -VM $vm `
    -PublisherName MicrosoftWindowsServer `
    -Offer WindowsServer `
    -Skus 2016-Datacenter `
    -Version latest
  Add-AzVMNetworkInterface `
    -VM $vm `
    -Id $nic.Id
  Set-AzVMBootDiagnostic `
    -VM $vm `
    -Disable
  New-AzVM -ResourceGroupName myResourceGroupAG -Location EastUS -VM $vm
  Set-AzVMExtension `
    -ResourceGroupName myResourceGroupAG `
    -ExtensionName IIS `
    -VMName myVM$i `
    -Publisher Microsoft.Compute `
    -ExtensionType CustomScriptExtension `
    -TypeHandlerVersion 1.4 `
    -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
    -Location EastUS
}

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

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

Используйте IIS для тестирования шлюза приложений.

  1. Запустите командлет Get-AzPublicIPAddress, чтобы получить общедоступный IP-адрес шлюза приложений.
  2. Скопируйте и вставьте общедоступный IP-адрес в адресную строку браузера. Когда вы обновляете браузер, должно отобразиться имя виртуальной машины. Допустимый ответ подтверждает, что шлюз приложений создан и может успешно подключиться к серверу.
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress

Test application gateway

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

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

Чтобы удалить группу ресурсов, вызовите командлет Remove-AzResourceGroup:

Remove-AzResourceGroup -Name myResourceGroupAG

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

Manage web traffic with an application gateway using Azure PowerShell (Управление веб-трафиком с помощью шлюза приложений в Azure PowerShell)