Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Azure PowerShell можно использовать для создания шлюза приложений с сертификатом для завершения TLS/SSL , использующего масштабируемый набор виртуальных машин для внутренних серверов. В этом примере масштабируемый набор содержит два экземпляра виртуальных машин, которые добавляются в серверный пул шлюза приложений по умолчанию.
В этой статье вы узнаете, как:
- Создание самозаверяющего сертификата
- настройка сети;
- создание шлюза приложений с сертификатом;
- Создание масштабируемого набора виртуальных машин с серверным пулом по умолчанию
Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.
Note
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать, ознакомьтесь с разделом Установка Azure PowerShell. Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Миграция Azure PowerShell с AzureRM на Az.
Для этой статьи требуется модуль Azure PowerShell версии 1.0.0 или более поздней версии. Чтобы узнать версию, выполните команду Get-Module -ListAvailable Az. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell. При использовании PowerShell на локальном компьютере также нужно запустить Login-AzAccount, чтобы создать подключение к Azure.
Создание самозаверяющего сертификата
Для использования в рабочей среде следует импортировать действительный сертификат, подписанный доверенным поставщиком. В этой статье описано, как создать самозаверяющий сертификат с помощью 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 "Azure123456!" -Force -AsPlainText
Export-PfxCertificate `
-cert cert:\localMachine\my\E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630 `
-FilePath c:\appgwcert.pfx `
-Password $pwd
Создайте группу ресурсов
Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure и управление ими. Создайте группу ресурсов Azure с именем myResourceGroupAG с помощью New-AzResourceGroup.
New-AzResourceGroup -Name myResourceGroupAG -Location eastus
Создание сетевых ресурсов
Настройте подсети с именем myBackendSubnet и myAGSubnet с помощью New-AzVirtualNetworkSubnetConfig. Создайте виртуальную сеть с именем myVNet с помощью New-AzVirtualNetwork с конфигурациями подсети. Наконец, создайте общедоступный IP-адрес с именем myAGPublicIPAddress с помощью New-AzPublicIpAddress. Эти ресурсы используются для обеспечения сетевого подключения к шлюзу приложений и связанным с ним ресурсам.
$backendSubnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name myBackendSubnet `
-AddressPrefix 10.0.1.0/24
$agSubnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name myAGSubnet `
-AddressPrefix 10.0.2.0/24
$vnet = New-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Name myVNet `
-AddressPrefix 10.0.0.0/16 `
-Subnet $backendSubnetConfig, $agSubnetConfig
$pip = New-AzPublicIpAddress `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Name myAGPublicIPAddress `
-AllocationMethod Static `
-Sku Standard
Создание Шлюза приложений
Создание IP-конфигураций и интерфейсного порта
Свяжите созданную ранее подсеть myAGSubnet со шлюзом приложений, используя командлет New-AzApplicationGatewayIPConfiguration. Назначьте myAGPublicIPAddress шлюзу приложений с помощью New-AzApplicationGatewayFrontendIPConfig.
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Name myVNet
$subnet=$vnet.Subnets[0]
$gipconfig = New-AzApplicationGatewayIPConfiguration `
-Name myAGIPConfig `
-Subnet $subnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig `
-Name myAGFrontendIPConfig `
-PublicIPAddress $pip
$frontendport = New-AzApplicationGatewayFrontendPort `
-Name myFrontendPort `
-Port 443
Создание серверного пула и настройка параметров
Создайте внутренний пул с именем appGatewayBackendPool для шлюза приложений с помощью New-AzApplicationGatewayBackendAddressPool. Настройте параметры для внутреннего пула с помощью New-AzApplicationGatewayBackendHttpSettings.
$defaultPool = New-AzApplicationGatewayBackendAddressPool `
-Name appGatewayBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSettings `
-Name myPoolSettings `
-Port 80 `
-Protocol Http `
-CookieBasedAffinity Enabled `
-RequestTimeout 120
Создайте слушатель и правило по умолчанию
Для того чтобы шлюз приложений правильно маршрутизировал трафик к набору серверов внутренней сети, требуется прослушиватель. В этом примере создается базовый прослушиватель, который прослушивает трафик HTTPS по корневому URL-адресу.
Создайте объект сертификата с помощью New-AzApplicationGatewaySslCertificate , а затем создайте прослушиватель с именем mydefaultListener с помощью New-AzApplicationGatewayHttpListener с конфигурацией внешнего интерфейса, интерфейсным портом и сертификатом, созданным ранее. Правило необходимо для того, чтобы слушатель знал, какой пул серверов использовать для входящего трафика. Создайте базовое правило с именем rule1 с помощью New-AzApplicationGatewayRequestRoutingRule.
$pwd = ConvertTo-SecureString `
-String "Azure123456!" `
-Force `
-AsPlainText
$cert = New-AzApplicationGatewaySslCertificate `
-Name "appgwcert" `
-CertificateFile "c:\appgwcert.pfx" `
-Password $pwd
$defaultlistener = New-AzApplicationGatewayHttpListener `
-Name mydefaultListener `
-Protocol Https `
-FrontendIPConfiguration $fipconfig `
-FrontendPort $frontendport `
-SslCertificate $cert
$frontendRule = New-AzApplicationGatewayRequestRoutingRule `
-Name rule1 `
-RuleType Basic `
-HttpListener $defaultlistener `
-BackendAddressPool $defaultPool `
-BackendHttpSettings $poolSettings `
-priority 100
Создание шлюза приложений с помощью сертификата
Теперь, когда вы создали необходимые вспомогательные ресурсы, укажите параметры шлюза приложений с именем myAppGateway с помощью New-AzApplicationGatewaySku, а затем создайте его с помощью New-AzApplicationGateway с сертификатом.
Создание шлюза приложений
$sku = New-AzApplicationGatewaySku `
-Name Standard_v2 `
-Tier Standard_v2 `
-Capacity 2
$appgw = New-AzApplicationGateway `
-Name myAppGateway `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-BackendAddressPools $defaultPool `
-BackendHttpSettingsCollection $poolSettings `
-FrontendIpConfigurations $fipconfig `
-GatewayIpConfigurations $gipconfig `
-FrontendPorts $frontendport `
-HttpListeners $defaultlistener `
-RequestRoutingRules $frontendRule `
-Sku $sku `
-SslCertificates $cert
Создание масштабируемого набора виртуальных машин
В этом примере вы создадите виртуальный масштабируемый набор машин для предоставления серверов для обратного пула в шлюзе приложений. При настройке параметров IP-адресов вы назначаете масштабируемый набор серверному пулу.
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Name myVNet
$appgw = Get-AzApplicationGateway `
-ResourceGroupName myResourceGroupAG `
-Name myAppGateway
$backendPool = Get-AzApplicationGatewayBackendAddressPool `
-Name appGatewayBackendPool `
-ApplicationGateway $appgw
$ipConfig = New-AzVmssIpConfig `
-Name myVmssIPConfig `
-SubnetId $vnet.Subnets[1].Id `
-ApplicationGatewayBackendAddressPoolsId $backendPool.Id
$vmssConfig = New-AzVmssConfig `
-Location eastus `
-SkuCapacity 2 `
-SkuName Standard_DS2 `
-UpgradePolicyMode Automatic
Set-AzVmssStorageProfile $vmssConfig `
-ImageReferencePublisher MicrosoftWindowsServer `
-ImageReferenceOffer WindowsServer `
-ImageReferenceSku 2016-Datacenter `
-ImageReferenceVersion latest `
-OsDiskCreateOption FromImage
Set-AzVmssOsProfile $vmssConfig `
-AdminUsername azureuser `
-AdminPassword "Azure123456!" `
-ComputerNamePrefix myvmss
Add-AzVmssNetworkInterfaceConfiguration `
-VirtualMachineScaleSet $vmssConfig `
-Name myVmssNetConfig `
-Primary $true `
-IPConfiguration $ipConfig
New-AzVmss `
-ResourceGroupName myResourceGroupAG `
-Name myvmss `
-VirtualMachineScaleSet $vmssConfig
Установить IIS
$publicSettings = @{ "fileUris" = (,"https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/appgatewayurl.ps1");
"commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File appgatewayurl.ps1" }
$vmss = Get-AzVmss -ResourceGroupName myResourceGroupAG -VMScaleSetName myvmss
Add-AzVmssExtension -VirtualMachineScaleSet $vmss `
-Name "customScript" `
-Publisher "Microsoft.Compute" `
-Type "CustomScriptExtension" `
-TypeHandlerVersion 1.8 `
-Setting $publicSettings
Update-AzVmss `
-ResourceGroupName myResourceGroupAG `
-Name myvmss `
-VirtualMachineScaleSet $vmss
Тестирование шлюза приложений
Вы можете использовать командлет Get-AzPublicIPAddress, чтобы получить общедоступный IP-адрес шлюза приложений. Скопируйте общедоступный IP-адрес и вставьте его в адресную строку браузера.
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress
Чтобы принять предупреждение системы безопасности, если используется самозаверяющий сертификат безопасности, выберите Сведения, а затем нажмите Перейти на веб-страницу. Затем ваш защищенный веб-сайт IIS отображается, как показано в следующем примере:
Очистите ресурсы
Если больше не требуется, удалите группу ресурсов, шлюз приложений и все связанные ресурсы с помощью Remove-AzResourceGroup.
Remove-AzResourceGroup -Name myResourceGroupAG
Дальнейшие шаги
Создание шлюза приложений для размещения нескольких веб-сайтов