チュートリアル:Web アプリケーションのアクセスを改善するアプリケーション ゲートウェイを作成するTutorial: Create an application gateway that improves web application access

Web アプリケーションのアクセスを改善しようと考えている IT 管理者なら、顧客の需要に応じてスケーリングし、複数の可用性ゾーンを利用するように、アプリケーション ゲートウェイを最適化できます。If you're an IT admin concerned with improving web application access, you can optimize your application gateway to scale based on customer demand and span multiple availability zones. このチュートリアルは、自動スケーリング、ゾーン冗長性、予約済み VIP (静的 IP) といった Azure Application Gateway の機能を構成するときに役立ちます。This tutorial helps you configure Azure Application Gateway features that do that: autoscaling, zone redundancy, and reserved VIPs (static IP). Azure PowerShell コマンドレットと Azure Resource Manager デプロイ モデルを使用して、問題を解決します。You'll use Azure PowerShell cmdlets and the Azure Resource Manager deployment model to solve the problem.

このチュートリアルでは、以下の内容を学習します。In this tutorial, you learn how to:

  • 自己署名証明書の作成Create a self-signed certificate
  • 自動スケーリングする仮想ネットワークを作成するCreate an autoscale virtual network
  • 予約済みパブリック IP を作成するCreate a reserved public IP
  • アプリケーション ゲートウェイのインフラストラクチャをセットアップするSet up your application gateway infrastructure
  • 自動スケールを指定するSpecify autoscale
  • アプリケーション ゲートウェイの作成Create the application gateway
  • アプリケーション ゲートウェイのテストTest the application gateway

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。If you don't have an Azure subscription, create a free account before you begin.

前提条件Prerequisites

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

このチュートリアルでは、Azure PowerShell をローカルで実行する必要があります。This tutorial requires that you run Azure PowerShell locally. Azure PowerShell モジュール バージョン 1.0.0 以降がインストールされている必要があります。You must have Azure PowerShell module version 1.0.0 or later installed. バージョンを確認するには、Get-Module -ListAvailable Az を実行します。Run Get-Module -ListAvailable Az to find the version. アップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。If you need to upgrade, see Install Azure PowerShell module. PowerShell のバージョンを確認した後、Connect-AzAccount を実行して Azure との接続を作成します。After you verify the PowerShell version, run Connect-AzAccount to create a connection with Azure.

Azure へのサインインSign in to Azure

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

リソース グループを作成するCreate a resource group

利用可能ないずれかの場所で、リソース グループを作成します。Create a resource group in one of the available locations.

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

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

自己署名証明書の作成Create a self-signed certificate

実際の運用では、信頼できるプロバイダーによって署名された有効な証明書をインポートする必要があります。For production use, you should import a valid certificate signed by trusted provider. このチュートリアルでは、New-SelfSignedCertificate を使用して、自己署名証明書を作成します。For this tutorial, you create a self-signed certificate using New-SelfSignedCertificate. Export-PfxCertificate と返されたサムプリントを使用して、pfx ファイルを証明書からエクスポートできます。You can use Export-PfxCertificate with the Thumbprint that was returned to export a pfx file from the certificate.

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

次のような結果が表示されます。You should see something like this result:

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

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

サムプリントを使用して、pfx ファイルを作成します。Use the thumbprint to create the pfx file:

$pwd = ConvertTo-SecureString -String "Azure123456!" -Force -AsPlainText

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

仮想ネットワークの作成Create a virtual network

自動スケーリングするアプリケーション ゲートウェイ用の 1 つの専用サブネットを持つ仮想ネットワークを作成します。Create a virtual network with one dedicated subnet for an autoscaling application gateway. 現在は、専用サブネットごとに 1 つの自動スケール アプリケーション ゲートウェイしかデプロイできません。Currently only one autoscaling application gateway can be deployed in each dedicated subnet.

#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 を作成するCreate a reserved public IP

PublicIPAddress の割り当て方法を Static として指定します。Specify the allocation method of PublicIPAddress as Static. 自動スケール アプリケーション ゲートウェイ VIP は、静的のみです。An autoscaling application gateway VIP can only be static. 動的 IP はサポートされていません。Dynamic IPs are not supported. 標準の PublicIpAddress SKU のみがサポートされています。Only the standard PublicIpAddress SKU is supported.

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

詳細を取得するRetrieve details

ローカル オブジェクトのリソース グループ、サブネット、および IP の詳細を取得して、アプリケーション ゲートウェイの IP 構成の詳細を作成します。Retrieve details of the resource group, subnet, and IP in a local object to create the IP configuration details for the application gateway.

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

インフラストラクチャを構成するConfigure the infrastructure

既存の Standard アプリケーション ゲートウェイと同じ形式で、IP 構成、フロントエンド IP 構成、バックエンド プール、HTTP 設定、証明書、ポート、リスナー、およびルールを構成します。Configure the IP config, front-end IP config, back-end pool, HTTP settings, certificate, port, listener, and rule in an identical format to the existing Standard application gateway. 新しい SKU は、Standard SKU と同じオブジェクト モデルに従います。The new SKU follows the same object model as the Standard SKU.

$ipconfig = New-AzApplicationGatewayIPConfiguration -Name "IPConfig" -Subnet $gwSubnet
$fip = New-AzApplicationGatewayFrontendIPConfig -Name "FrontendIPCOnfig" -PublicIPAddress $publicip
$pool = New-AzApplicationGatewayBackendAddressPool -Name "Pool1" `
       -BackendIPAddresses testbackend1.westus.cloudapp.azure.com, testbackend2.westus.cloudapp.azure.com
$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
$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

自動スケールを指定するSpecify autoscale

これで、アプリケーション ゲートウェイに自動スケーリングの構成を指定できます。Now you can specify the autoscale configuration for the application gateway. 次の 2 種類の自動スケール構成がサポートされています。Two autoscaling configuration types are supported:

  • 固定容量モードFixed capacity mode. このモードでは、アプリケーション ゲートウェイは自動スケールせず、固定されたスケール ユニットの容量で動作します。In this mode, the application gateway does not autoscale and operates at a fixed Scale Unit capacity.

    $sku = New-AzApplicationGatewaySku -Name Standard_v2 -Tier Standard_v2 -Capacity 2
    
  • 自動スケール モードAutoscaling mode. このモードでは、アプリケーション ゲートウェイは、アプリケーションのトラフィック パターンに基づいて、自動スケールします。In this mode, the application gateway autoscales based on the application traffic pattern.

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

アプリケーション ゲートウェイの作成Create the application gateway

アプリケーション ゲートウェイを作成し、冗長性ゾーンと自動スケーリングの構成を含めます。Create the application gateway and include redundancy zones and the autoscale configuration.

$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

アプリケーション ゲートウェイのテストTest the application gateway

アプリケーション ゲートウェイのパブリック IP アドレスは、Get-AzPublicIPAddress を使用して取得します。Use Get-AzPublicIPAddress to get the public IP address of the application gateway. パブリック IP アドレスまたは DNS 名をコピーして、それをお使いのブラウザーのアドレス バーに貼り付けます。Copy the public IP address or DNS name, and then paste it into the address bar of your browser.

Get-AzPublicIPAddress -ResourceGroupName $rg -Name AppGwVIP

リソースをクリーンアップするClean up resources

最初に、アプリケーション ゲートウェイで作成されたリソースを調べます。First explore the resources that were created with the application gateway. 次に、必要がないときは、Remove-AzResourceGroup コマンドを使用して、リソース グループ、アプリケーション ゲートウェイ、およびすべての関連リソースを削除できます。Then, when they're no longer needed, you can use the Remove-AzResourceGroup command to remove the resource group, application gateway, and all related resources.

Remove-AzResourceGroup -Name $rg

次のステップNext steps