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


Руководство. Создание шлюза приложений, который улучшает доступ к веб-приложениям

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

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

  • Создание самозаверяющего сертификата
  • Создание виртуальной сети автомасштабирования
  • Создание зарезервированного общедоступного IP-адреса
  • Настройка инфраструктуры шлюза приложений
  • Задать автомасштабирование
  • Создание шлюза приложений
  • Тестирование шлюза приложений

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

Дополнительные сведения о поддержке зоны доступности в Шлюзе приложений версии 2 см. в разделе "Надежность" для шлюза приложений версии 2.

Предпосылки

Примечание.

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

В этом руководстве требуется локальное выполнение сеанса Azure PowerShell с правами администратора. Необходимо установить модуль Azure PowerShell версии 1.0.0 или более поздней версии. Чтобы узнать версию, выполните команду Get-Module -ListAvailable Az. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell. После проверки версии PowerShell выполните командлет Connect-AzAccount, чтобы создать подключение к Azure.

Вход в Azure

Connect-AzAccount
Select-AzSubscription -Subscription "<sub name>"

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

Создайте группу ресурсов в одном из доступных расположений.

$location = "East US 2"
$rg = "AppGW-rg"

#Create a new Resource Group
New-AzResourceGroup -Name $rg -Location $location

Создание самозаверяющего сертификата

Для использования в рабочей среде следует импортировать действительный сертификат, подписанный доверенным поставщиком. В этом руководстве мы создадим самозаверяющий сертификат с помощью New-SelfSignedCertificate. Вы можете использовать Export-PfxCertificate с возвращенным отпечатком сертификата, чтобы экспортировать PFX-файл.

New-SelfSignedCertificate `
  -certstorelocation cert:\localmachine\my `
  -dnsname www.contoso.com

Отобразится примерно такой результат:

PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\my

Thumbprint                                Subject
----------                                -------
E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630  CN=www.contoso.com

Используйте отпечаток для создания PFX-файла. Замените <пароль> паролем по своему усмотрению:

$pwd = ConvertTo-SecureString -String "<password>" -Force -AsPlainText

Export-PfxCertificate `
  -cert cert:\localMachine\my\E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630 `
  -FilePath c:\appgwcert.pfx `
  -Password $pwd

Создание виртуальной сети

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

#Create VNet with two subnets
$sub1 = New-AzVirtualNetworkSubnetConfig -Name "AppGwSubnet" -AddressPrefix "10.0.0.0/24"
$sub2 = New-AzVirtualNetworkSubnetConfig -Name "BackendSubnet" -AddressPrefix "10.0.1.0/24"
$vnet = New-AzvirtualNetwork -Name "AutoscaleVNet" -ResourceGroupName $rg `
       -Location $location -AddressPrefix "10.0.0.0/16" -Subnet $sub1, $sub2

Создание зарезервированного общедоступного IP-адреса

Укажите метод выделения PublicIPAddress как статический. Виртуальный IP-адрес шлюза приложений с функцией автомасштабирования может быть только статическим. Динамические IP-адреса не поддерживаются. Поддерживается только стандартный номер SKU PublicIpAddress.

#Create static public IP
$pip = New-AzPublicIpAddress -ResourceGroupName $rg -name "AppGwVIP" `
       -location $location -AllocationMethod Static -Sku Standard -Zone 1,2,3

Получение сведений

Получение сведений о группе ресурсов, подсети и IP-адресе в локальном объекте для создания сведений о конфигурации IP для шлюза приложений.

$publicip = Get-AzPublicIpAddress -ResourceGroupName $rg -name "AppGwVIP"
$vnet = Get-AzvirtualNetwork -Name "AutoscaleVNet" -ResourceGroupName $rg
$gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name "AppGwSubnet" -VirtualNetwork $vnet

Создание веб-приложений

Настройте два веб-приложения для внутреннего пула. Замените <имя> сайта1 и <имя> сайта2 уникальными именами в доменеazurewebsites.net.

New-AzAppServicePlan -ResourceGroupName $rg -Name "ASP-01"  -Location $location -Tier Basic `
   -NumberofWorkers 2 -WorkerSize Small
New-AzWebApp -ResourceGroupName $rg -Name <site1-name> -Location $location -AppServicePlan ASP-01
New-AzWebApp -ResourceGroupName $rg -Name <site2-name> -Location $location -AppServicePlan ASP-01

Настройка инфраструктуры

Настройте конфигурацию IP-адресов, конфигурацию внешнего IP-адреса, внутренний пул, параметры HTTP, сертификат, порт, прослушиватель и правило в идентичном формате существующего шлюза приложений уровня "Стандартный". Новый SKU следует той же объектной модели, что и стандартный SKU.

Замените ваши два FQDN веб-приложения (например: mywebapp.azurewebsites.net) в определении переменной $pool.

$ipconfig = New-AzApplicationGatewayIPConfiguration -Name "IPConfig" -Subnet $gwSubnet
$fip = New-AzApplicationGatewayFrontendIPConfig -Name "FrontendIPConfig" -PublicIPAddress $publicip
$pool = New-AzApplicationGatewayBackendAddressPool -Name "Pool1" `
       -BackendIPAddresses <your first web app FQDN>, <your second web app FQDN>
$fp01 = New-AzApplicationGatewayFrontendPort -Name "SSLPort" -Port 443
$fp02 = New-AzApplicationGatewayFrontendPort -Name "HTTPPort" -Port 80

$securepfxpwd = ConvertTo-SecureString -String "Azure123456!" -AsPlainText -Force
$sslCert01 = New-AzApplicationGatewaySslCertificate -Name "SSLCert" -Password $securepfxpwd `
            -CertificateFile "c:\appgwcert.pfx"
$listener01 = New-AzApplicationGatewayHttpListener -Name "SSLListener" `
             -Protocol Https -FrontendIPConfiguration $fip -FrontendPort $fp01 -SslCertificate $sslCert01
$listener02 = New-AzApplicationGatewayHttpListener -Name "HTTPListener" `
             -Protocol Http -FrontendIPConfiguration $fip -FrontendPort $fp02

$setting = New-AzApplicationGatewayBackendHttpSettings -Name "BackendHttpSetting1" `
          -Port 80 -Protocol Http -CookieBasedAffinity Disabled -PickHostNameFromBackendAddress
$rule01 = New-AzApplicationGatewayRequestRoutingRule -Name "Rule1" -RuleType basic `
         -BackendHttpSettings $setting -HttpListener $listener01 -BackendAddressPool $pool -Priority 1
$rule02 = New-AzApplicationGatewayRequestRoutingRule -Name "Rule2" -RuleType basic `
         -BackendHttpSettings $setting -HttpListener $listener02 -BackendAddressPool $pool -Priority 2

Задать автомасштабирование

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

$autoscaleConfig = New-AzApplicationGatewayAutoscaleConfiguration -MinCapacity 2
$sku = New-AzApplicationGatewaySku -Name Standard_v2 -Tier Standard_v2

В этом режиме автомасштабирование шлюза приложений зависит от шаблона трафика приложения.

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

Создайте шлюз приложений и включите зоны избыточности и конфигурацию автомасштабирования.

$appgw = New-AzApplicationGateway -Name "AutoscalingAppGw" -Zone 1,2,3 `
  -ResourceGroupName $rg -Location $location -BackendAddressPools $pool `
  -BackendHttpSettingsCollection $setting -GatewayIpConfigurations $ipconfig `
  -FrontendIpConfigurations $fip -FrontendPorts $fp01, $fp02 `
  -HttpListeners $listener01, $listener02 -RequestRoutingRules $rule01, $rule02 `
  -Sku $sku -sslCertificates $sslCert01 -AutoscaleConfiguration $autoscaleConfig

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

Используйте Get-AzPublicIPAddress, чтобы получить общедоступный IP-адрес шлюза приложений. Скопируйте общедоступный IP-адрес или DNS-имя, а затем вставьте его в адресную строку браузера.

$pip = Get-AzPublicIPAddress -ResourceGroupName $rg -Name AppGwVIP
$pip.IpAddress

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

Сначала изучите ресурсы, созданные с помощью шлюза приложений. Затем, когда они больше не нужны, можно использовать Remove-AzResourceGroup команду для удаления группы ресурсов, шлюза приложений и всех связанных ресурсов.

Remove-AzResourceGroup -Name $rg

Дальнейшие действия