Учебник. Создание шлюза приложений, который улучшает доступ к веб-приложениям
Если вы ИТ-администратор и желаете улучшить доступ к веб-приложениям, то можете оптимизировать шлюз приложений таким образом, чтобы он выполнял масштабирование на основе пользовательского спроса и охватывал несколько зон доступности. Это руководство поможет вам настроить компоненты Шлюза приложений Azure, которые отвечают за автоматическое масштабирование, избыточность в пределах зоны и зарезервированные виртуальные IP-адреса (статический IP-адрес). Чтобы решить проблему, вы будете использовать командлеты Azure PowerShell и модель развертывания с помощью Azure Resource Manager.
В этом руководстве описано следующее:
- Создание самозаверяющего сертификата
- Создание автоматически масштабируемой виртуальной сети.
- Создание зарезервированного общедоступного IP-адреса
- Настройка инфраструктуры шлюза приложений.
- Настройка автомасштабирования
- Создание шлюза приложений
- Тестирование шлюза приложений
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Предварительные требования
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure 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
Создание веб-приложений
Настройте два веб-приложения для серверного пула. Замените site1-name> и< site-2-name> уникальными именами в домене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
$rule02 = New-AzApplicationGatewayRequestRoutingRule -Name "Rule2" -RuleType basic `
-BackendHttpSettings $setting -HttpListener $listener02 -BackendAddressPool $pool
Настройка автомасштабирования
Теперь можно указать конфигурацию автомасштабирования для шлюза приложений.
$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