Azure PowerShell を使用して URL パス ベースのルーティング規則のあるアプリケーション ゲートウェイを作成するCreate an application gateway with URL path-based routing rules using Azure PowerShell

アプリケーション ゲートウェイを作成するときに、Azure PowerShell を使用して URL パス ベースのルーティング規則を構成できます。You can use Azure PowerShell to configure URL path-based routing rules when you create an application gateway. このチュートリアルでは、仮想マシン スケール セットを使用してバックエンド プールを作成します。In this tutorial, you create backend pools using a virtual machine scale set. その後、Web トラフィックがプール内の適切なサーバーに確実に到着するようにルーティング規則を作成します。You then create routing rules that make sure web traffic arrives at the appropriate servers in the pools.

この記事では、次のことについて説明します:In this article, you learn how to:

  • ネットワークのセットアップSet up the network
  • URL マップでのアプリケーション ゲートウェイの作成Create an application gateway with URL map
  • バックエンド プールでの仮想マシン スケール セットの作成Create virtual machine scale sets with the backend pools

URL ルーティングの例

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

Azure Cloud Shell を起動するLaunch Azure Cloud Shell

Azure Cloud Shell は無料のインタラクティブ シェルです。この記事の手順は、Azure Cloud Shell を使って実行することができます。The Azure Cloud Shell is a free interactive shell that you can use to run the steps in this article. 一般的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。It has common Azure tools preinstalled and configured to use with your account. [コピー] をクリックしてコードをコピーし、Cloud Shell に貼り付けて Enter キーを押すだけで、コードを実行することができます。Just click the Copy to copy the code, paste it into the Cloud Shell, and then press enter to run it. Cloud Shell は、次のようにいくつかの方法で起動することができます。There are a few ways to launch the Cloud Shell:

コード ブロックの右上隅にある [使ってみる] をクリックします。Click Try It in the upper right corner of a code block. この記事の Cloud Shell
ブラウザーで Cloud Shell を開きます。Open Cloud Shell in your browser. https://shell.azure.com/powershellhttps://shell.azure.com/powershell
Azure Portal の右上のメニューの [Cloud Shell] ボタンをクリックします。Click the Cloud Shell button on the menu in the upper right of the Azure portal. ポータルの Cloud ShellCloud Shell in the portal

PowerShell をインストールしてローカルで使用する場合、このチュートリアルでは Azure PowerShell モジュール バージョン 3.6 以降が必要になります。If you choose to install and use the PowerShell locally, this tutorial requires the Azure PowerShell module version 3.6 or later. バージョンを確認するには、Get-Module -ListAvailable AzureRM を実行します。To find the version, run Get-Module -ListAvailable AzureRM . アップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。If you need to upgrade, see Install Azure PowerShell module. PowerShell をローカルで実行している場合、Login-AzureRmAccount を実行して Azure との接続を作成することも必要です。If you are running PowerShell locally, you also need to run Login-AzureRmAccount to create a connection with Azure.

リソース グループの作成Create a resource group

リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。A resource group is a logical container into which Azure resources are deployed and managed. New-AzureRmResourceGroup を使用して Azure リソース グループを作成します。Create an Azure resource group using New-AzureRmResourceGroup.

New-AzureRmResourceGroup -Name myResourceGroupAG -Location eastus

ネットワーク リソースを作成するCreate network resources

New-AzureRmVirtualNetworkSubnetConfig を使用して、サブネット構成 myAGSubnet および myBackendSubnet を作成します。Create the subnet configurations myAGSubnet and myBackendSubnet using New-AzureRmVirtualNetworkSubnetConfig. New-AzureRmVirtualNetwork とサブネット構成を使用して、myVNet という名前の仮想ネットワークを作成します。Create the virtual network named myVNet using New-AzureRmVirtualNetwork with the subnet configurations. 最後に、New-AzureRmPublicIpAddress を使用して myAGPublicIPAddress という名前のパブリック IP アドレスを作成します。And finally, create the public IP address named myAGPublicIPAddress using New-AzureRmPublicIpAddress. こうしたリソースは、アプリケーション ゲートウェイとその関連リソースにネットワーク接続を提供するために使用されます。These resources are used to provide network connectivity to the application gateway and its associated resources.

$backendSubnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
  -Name myBackendSubnet `
  -AddressPrefix 10.0.1.0/24
$agSubnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
  -Name myAGSubnet `
  -AddressPrefix 10.0.2.0/24
$vnet = New-AzureRmVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myVNet `
  -AddressPrefix 10.0.0.0/16 `
  -Subnet $backendSubnetConfig, $agSubnetConfig
$pip = New-AzureRmPublicIpAddress `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myAGPublicIPAddress `
  -AllocationMethod Dynamic

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

IP 構成とフロントエンド ポートの作成Create the IP configurations and frontend port

New-AzureRmApplicationGatewayIPConfiguration を使用して、前に作成した myAGSubnet をアプリケーション ゲートウェイに関連付けます。Associate myAGSubnet that you previously created to the application gateway using New-AzureRmApplicationGatewayIPConfiguration. New-AzureRmApplicationGatewayFrontendIPConfig を使用して、myAGPublicIPAddress をアプリケーション ゲートウェイに割り当てます。Assign the myAGPublicIPAddress to the application gateway using New-AzureRmApplicationGatewayFrontendIPConfig.

$vnet = Get-AzureRmVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Name myVNet
$subnet=$vnet.Subnets[0]
$pip = Get-AzureRmPublicIpAddress `
  -ResourceGroupName myResourceGroupAG `
  -Name myAGPublicIPAddress
$gipconfig = New-AzureRmApplicationGatewayIPConfiguration `
  -Name myAGIPConfig `
  -Subnet $subnet
$fipconfig = New-AzureRmApplicationGatewayFrontendIPConfig `
  -Name myAGFrontendIPConfig `
  -PublicIPAddress $pip
$frontendport = New-AzureRmApplicationGatewayFrontendPort `
  -Name myFrontendPort `
  -Port 80

既定のプールと設定の作成Create the default pool and settings

New-AzureRmApplicationGatewayBackendAddressPool を使用して、アプリケーション ゲートウェイに対して appGatewayBackendPool という名前の既定のバックエンド プールを作成します。Create the default backend pool named appGatewayBackendPool for the application gateway using New-AzureRmApplicationGatewayBackendAddressPool. New-AzureRmApplicationGatewayBackendHttpSettings を使用して、バックエンド プールの設定を構成します。Configure the settings for the backend pool using New-AzureRmApplicationGatewayBackendHttpSettings.

$defaultPool = New-AzureRmApplicationGatewayBackendAddressPool `
  -Name appGatewayBackendPool 
$poolSettings = New-AzureRmApplicationGatewayBackendHttpSettings `
  -Name myPoolSettings `
  -Port 80 `
  -Protocol Http `
  -CookieBasedAffinity Enabled `
  -RequestTimeout 120

既定のリスナーとルールの作成Create the default listener and rule

アプリケーション ゲートウェイがバックエンド プールへのトラフィックを適切にルーティングできるようにするにはリスナーが必要です。A listener is required to enable the application gateway to route traffic appropriately to the backend pool. このチュートリアルでは、2 つのリスナーを作成します。In this tutorial, you create two listeners. 最初に作成する基本的なリスナーは、ルート URL でトラフィックをリッスンします。The first basic listener that you create listens for traffic at the root URL. 2 番目に作成するリスナーは、特定の URL でトラフィックをリッスンします。The second listener that you create listens for traffic at specific URLs.

New-AzureRmApplicationGatewayHttpListener と、前に作成したフロントエンド構成およびフロントエンド ポートを使用して、myDefaultListener という名前の既定のリスナーを作成します。Create the default listener named myDefaultListener using New-AzureRmApplicationGatewayHttpListener with the frontend configuration and frontend port that you previously created. 着信トラフィックに使用するバックエンド プールをリスナーが判断するには、ルールが必要です。A rule is required for the listener to know which backend pool to use for incoming traffic. New-AzureRmApplicationGatewayRequestRoutingRule を使用して、rule1 という名前の基本ルールを作成します。Create a basic rule named rule1 using New-AzureRmApplicationGatewayRequestRoutingRule.

$defaultlistener = New-AzureRmApplicationGatewayHttpListener `
  -Name myDefaultListener `
  -Protocol Http `
  -FrontendIPConfiguration $fipconfig `
  -FrontendPort $frontendport
$frontendRule = New-AzureRmApplicationGatewayRequestRoutingRule `
  -Name rule1 `
  -RuleType Basic `
  -HttpListener $defaultlistener `
  -BackendAddressPool $defaultPool `
  -BackendHttpSettings $poolSettings

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

必要な関連リソースを作成したら、New-AzureRmApplicationGatewaySku を使用して、myAppGateway という名前のアプリケーション ゲートウェイのパラメーターを指定し、New-AzureRmApplicationGateway を使用して、それを作成します。Now that you created the necessary supporting resources, specify parameters for the application gateway named myAppGateway using New-AzureRmApplicationGatewaySku, and then create it using New-AzureRmApplicationGateway.

$sku = New-AzureRmApplicationGatewaySku `
  -Name Standard_Medium `
  -Tier Standard `
  -Capacity 2
$appgw = New-AzureRmApplicationGateway `
  -Name myAppGateway `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -BackendAddressPools $defaultPool `
  -BackendHttpSettingsCollection $poolSettings `
  -FrontendIpConfigurations $fipconfig `
  -GatewayIpConfigurations $gipconfig `
  -FrontendPorts $frontendport `
  -HttpListeners $defaultlistener `
  -RequestRoutingRules $frontendRule `
  -Sku $sku

イメージおよびビデオのバックエンド プールとポートの追加Add image and video backend pools and port

imagesBackendPool および videoBackendPool という名前のバックエンド プールをアプリケーション ゲートウェイに追加するには、Add-AzureRmApplicationGatewayBackendAddressPool を使用します。You can add backend pools named imagesBackendPool and videoBackendPool to your application gateway by using Add-AzureRmApplicationGatewayBackendAddressPool. プールのフロントエンド ポートは、Add-AzureRmApplicationGatewayFrontendPort を使用して追加します。You add the frontend port for the pools using Add-AzureRmApplicationGatewayFrontendPort. その後、Set-AzureRmApplicationGateway を使用して、アプリケーション ゲートウェイに変更を送信します。You then submit the changes to the application gateway using Set-AzureRmApplicationGateway.

$appgw = Get-AzureRmApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway
Add-AzureRmApplicationGatewayBackendAddressPool `
  -ApplicationGateway $appgw `
  -Name imagesBackendPool 
Add-AzureRmApplicationGatewayBackendAddressPool `
  -ApplicationGateway $appgw `
  -Name videoBackendPool
Add-AzureRmApplicationGatewayFrontendPort `
  -ApplicationGateway $appgw `
  -Name bport `
  -Port 8080
Set-AzureRmApplicationGateway -ApplicationGateway $appgw

バックエンド リスナーの追加Add backend listener

Add-AzureRmApplicationGatewayHttpListener を使用して、トラフィックのルーティングに必要な backendListener という名前のバックエンド リスナーを追加します。Add the backend listener named backendListener that's needed to route traffic using Add-AzureRmApplicationGatewayHttpListener.

$appgw = Get-AzureRmApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway
$backendPort = Get-AzureRmApplicationGatewayFrontendPort `
  -ApplicationGateway $appgw `
  -Name bport
$fipconfig = Get-AzureRmApplicationGatewayFrontendIPConfig `
  -ApplicationGateway $appgw
Add-AzureRmApplicationGatewayHttpListener `
  -ApplicationGateway $appgw `
  -Name backendListener `
  -Protocol Http `
  -FrontendIPConfiguration $fipconfig `
  -FrontendPort $backendPort
Set-AzureRmApplicationGateway -ApplicationGateway $appgw

URL パス マップの追加Add URL path map

URL パス マップにより、特定の URL が特定のバックエンド プールに確実にルーティングされます。URL path maps make sure that specific URLs are routed to specific backend pools. imagePathRule および videoPathRule という名前の URL パス マップを作成するには、New-AzureRmApplicationGatewayPathRuleConfig および Add-AzureRmApplicationGatewayUrlPathMapConfig を使用します。You can create URL path maps named imagePathRule and videoPathRule using New-AzureRmApplicationGatewayPathRuleConfig and Add-AzureRmApplicationGatewayUrlPathMapConfig.

$appgw = Get-AzureRmApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway
$poolSettings = Get-AzureRmApplicationGatewayBackendHttpSettings `
  -ApplicationGateway $appgw `
  -Name myPoolSettings
$imagePool = Get-AzureRmApplicationGatewayBackendAddressPool `
  -ApplicationGateway $appgw `
  -Name imagesBackendPool
$videoPool = Get-AzureRmApplicationGatewayBackendAddressPool `
  -ApplicationGateway $appgw `
  -Name videoBackendPool
$defaultPool = Get-AzureRmApplicationGatewayBackendAddressPool `
  -ApplicationGateway $appgw `
  -Name appGatewayBackendPool
$imagePathRule = New-AzureRmApplicationGatewayPathRuleConfig `
  -Name imagePathRule `
  -Paths "/images/*" `
  -BackendAddressPool $imagePool `
  -BackendHttpSettings $poolSettings
$videoPathRule = New-AzureRmApplicationGatewayPathRuleConfig `
  -Name videoPathRule `
    -Paths "/video/*" `
    -BackendAddressPool $videoPool `
    -BackendHttpSettings $poolSettings
Add-AzureRmApplicationGatewayUrlPathMapConfig `
  -ApplicationGateway $appgw `
  -Name urlpathmap `
  -PathRules $imagePathRule, $videoPathRule `
  -DefaultBackendAddressPool $defaultPool `
  -DefaultBackendHttpSettings $poolSettings
Set-AzureRmApplicationGateway -ApplicationGateway $appgw

ルーティング規則の追加Add routing rule

ルーティング規則は、URL マップを、作成したリスナーに関連付けます。The routing rule associates the URL map with the listener that you created. *rule2 という名前のルールを追加するには、Add-AzureRmApplicationGatewayRequestRoutingRule を使用します。You can add the rule named *rule2 using Add-AzureRmApplicationGatewayRequestRoutingRule.

$appgw = Get-AzureRmApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway
$backendlistener = Get-AzureRmApplicationGatewayHttpListener `
  -ApplicationGateway $appgw `
  -Name backendListener
$urlPathMap = Get-AzureRmApplicationGatewayUrlPathMapConfig `
  -ApplicationGateway $appgw `
  -Name urlpathmap
Add-AzureRmApplicationGatewayRequestRoutingRule `
  -ApplicationGateway $appgw `
  -Name rule2 `
  -RuleType PathBasedRouting `
  -HttpListener $backendlistener `
  -UrlPathMap $urlPathMap
Set-AzureRmApplicationGateway -ApplicationGateway $appgw

仮想マシン スケール セットの作成Create virtual machine scale sets

この例では、作成した 3 つのバックエンド プールをサポートする 3 つの仮想マシン スケール セットを作成します。In this example, you create three virtual machine scale sets that support the three backend pools that you created. 作成するスケール セットの名前は、myvmss1myvmss2、および myvmss3 です。The scale sets that you create are named myvmss1, myvmss2, and myvmss3. 各スケール セットには、IIS をインストールする 2 つの仮想マシン インスタンスが含まれています。Each scale set contains two virtual machine instances on which you install IIS. スケール セットは、IP 設定を構成するときにバックエンド プールに割り当てます。You assign the scale set to the backend pool when you configure the IP settings.

$vnet = Get-AzureRmVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Name myVNet
$appgw = Get-AzureRmApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway
$backendPool = Get-AzureRmApplicationGatewayBackendAddressPool `
  -Name appGatewayBackendPool `
  -ApplicationGateway $appgw
$imagesPool = Get-AzureRmApplicationGatewayBackendAddressPool `
  -Name imagesBackendPool `
  -ApplicationGateway $appgw
$videoPool = Get-AzureRmApplicationGatewayBackendAddressPool `
  -Name videoBackendPool `
  -ApplicationGateway $appgw
for ($i=1; $i -le 3; $i++)
{
  if ($i -eq 1)
  {
     $poolId = $backendPool.Id
  }
  if ($i -eq 2) 
  {
    $poolId = $imagesPool.Id
  }
  if ($i -eq 3)
  {
    $poolId = $videoPool.Id
  }
  $ipConfig = New-AzureRmVmssIpConfig `
    -Name myVmssIPConfig$i `
    -SubnetId $vnet.Subnets[1].Id `
    -ApplicationGatewayBackendAddressPoolsId $poolId
  $vmssConfig = New-AzureRmVmssConfig `
    -Location eastus `
    -SkuCapacity 2 `
    -SkuName Standard_DS2 `
    -UpgradePolicyMode Automatic
  Set-AzureRmVmssStorageProfile $vmssConfig `
    -ImageReferencePublisher MicrosoftWindowsServer `
    -ImageReferenceOffer WindowsServer `
    -ImageReferenceSku 2016-Datacenter `
    -ImageReferenceVersion latest
  Set-AzureRmVmssOsProfile $vmssConfig `
    -AdminUsername azureuser `
    -AdminPassword "Azure123456!" `
    -ComputerNamePrefix myvmss$i
  Add-AzureRmVmssNetworkInterfaceConfiguration `
    -VirtualMachineScaleSet $vmssConfig `
    -Name myVmssNetConfig$i `
    -Primary $true `
    -IPConfiguration $ipConfig
  New-AzureRmVmss `
    -ResourceGroupName myResourceGroupAG `
    -Name myvmss$i `
    -VirtualMachineScaleSet $vmssConfig
}

IIS のインストールInstall IIS

$publicSettings = @{ "fileUris" = (,"https://raw.githubusercontent.com/davidmu1/samplescripts/master/appgatewayurl.ps1"); 
  "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File appgatewayurl.ps1" }

for ($i=1; $i -le 3; $i++)
{
  $vmss = Get-AzureRmVmss -ResourceGroupName myResourceGroupAG -VMScaleSetName myvmss$i
  Add-AzureRmVmssExtension -VirtualMachineScaleSet $vmss `
    -Name "customScript" `
    -Publisher "Microsoft.Compute" `
    -Type "CustomScriptExtension" `
    -TypeHandlerVersion 1.8 `
    -Setting $publicSettings

  Update-AzureRmVmss `
    -ResourceGroupName myResourceGroupAG `
    -Name myvmss$i `
    -VirtualMachineScaleSet $vmss
}

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

Get-AzureRmPublicIPAddress を使用して、アプリケーション ゲートウェイのパブリック IP アドレスを取得できます。You can use Get-AzureRmPublicIPAddress to get the public IP address of the application gateway. パブリック IP アドレスをコピーし、ブラウザーのアドレス バーに貼り付けます。Copy the public IP address, and then paste it into the address bar of your browser. たとえば、http://52.168.55.24http://52.168.55.24:8080/images/test.htmhttp://52.168.55.24:8080/video/test.htm です。Such as, http://52.168.55.24, http://52.168.55.24:8080/images/test.htm, or http://52.168.55.24:8080/video/test.htm.

Get-AzureRmPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress

アプリケーション ゲートウェイでのベース URL のテスト

URL を http://:8080/video/test.htm (ベース URL の末尾) に変更します。次のように表示されます。Change the URL to http://:8080/video/test.htm to the end of the base URL and you should see something like the following example:

アプリケーション ゲートウェイでのイメージ URL のテスト

URL を http://:8080/video/test.htm に変更します。次のように表示されます。Change the URL to http://:8080/video/test.htm and you should see something like the following example:

アプリケーション ゲートウェイでのビデオ URL のテスト

次の手順Next steps

この記事で学習した内容は次のとおりです。In this article, you learned how to:

  • ネットワークのセットアップSet up the network
  • URL マップでのアプリケーション ゲートウェイの作成Create an application gateway with URL map
  • バックエンド プールでの仮想マシン スケール セットの作成Create virtual machine scale sets with the backend pools

アプリケーション ゲートウェイとその関連リソースの詳細を確認するには、ハウツー記事に進みます。To learn more about application gateways and their associated resources, continue to the how-to articles.