Azure CLI を使用して URL に基づいて Web トラフィックをルーティングするRoute web traffic based on the URL using the Azure CLI

皆さんは、Web トラフィックを管理する IT 管理者として、顧客またはユーザーができるだけ早く必要な情報を取得できるよう支援したいと考えています。As an IT administrator managing web traffic, you want to help your customers or users get the information they need as quickly as possible. そのエクスペリエンスを最適化する方法の 1 つとして、Web トラフィックをその種類ごとに異なるサーバー リソースにルーティングすることが考えられます。One way you can optimize their experience is by routing different kinds of web traffic to different server resources. この記事では、アプリケーションの各種トラフィックに対し、Azure CLI を使用して Application Gateway のルーティングをセットアップ、構成する方法について説明します。This article shows you how to use the Azure CLI to set up and configure Application Gateway routing for different types of traffic from your application. このルーティングによって、トラフィックは、URL に基づいて異なるサーバー プールにリダイレクトされます。The routing then directs the traffic to different server pools based on the URL.

URL ルーティングの例

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

  • 必要なネットワーク リソースのリソース グループを作成するCreate a resource group for the network resources you’ll need
  • ネットワーク リソースを作成するCreate the network resources
  • アプリケーションから着信するトラフィックのアプリケーション ゲートウェイを作成するCreate an application gateway for the traffic coming from your application
  • 各種トラフィックのサーバー プールとルーティング規則を指定するSpecify server pools and routing rules for the different types of traffic
  • プールを自動的にスケーリングできるよう各プールのスケール セットを作成するCreate a scale set for each pool so the pool can automatically scale
  • 各種のトラフィックが適切なプールに誘導されることを確認するためのテストを実行するRun a test so you can verify that the different types of traffic go to the correct pool

好みに応じて、Azure PowerShell または Azure portal を使用してこの手順を実行することもできます。If you prefer, you can complete this procedure using Azure PowerShell or the Azure portal.

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

前提条件Prerequisites

  • Azure Cloud Shell で Bash 環境を使用します。Use the Bash environment in Azure Cloud Shell.

    新しいウィンドウで Cloud Shell を起動するLaunch Cloud Shell in a new window

  • 必要に応じて、Azure CLI をインストールして、CLI リファレンス コマンドを実行します。If you prefer, install the Azure CLI to run CLI reference commands.

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。If you're using a local installation, sign in to the Azure CLI by using the az login command. 認証プロセスを完了するには、ターミナルに表示される手順に従います。To finish the authentication process, follow the steps displayed in your terminal. その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。For additional sign-in options, see Sign in with the Azure CLI.

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。When you're prompted, install Azure CLI extensions on first use. 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。For more information about extensions, see Use extensions with the Azure CLI.

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。Run az version to find the version and dependent libraries that are installed. 最新バージョンにアップグレードするには、az upgrade を実行します。To upgrade to the latest version, run az upgrade.

  • このチュートリアルには、Azure CLI のバージョン 2.0.4 以降が必要です。This tutorial requires version 2.0.4 or later of the Azure CLI. Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。If using Azure Cloud Shell, the latest version is already installed.

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

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

次の例では、myResourceGroupAG という名前のリソース グループを eastus に作成します。The following example creates a resource group named myResourceGroupAG in the eastus location.

az group create --name myResourceGroupAG --location eastus

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

az network vnet create を使用して、myVNet という名前の仮想ネットワークと myAGSubnet という名前のサブネットを作成します。Create the virtual network named myVNet and the subnet named myAGSubnet using az network vnet create. 次に、az network vnet subnet create を使用して、バックエンド サーバーに必要な myBackendSubnet という名前のサブネットを追加します。Then add a subnet named myBackendSubnet that's needed by the backend servers using az network vnet subnet create. az network public-ip create を使用して、myAGPublicIPAddress という名前のパブリック IP アドレスを作成します。Create the public IP address named myAGPublicIPAddress using az network public-ip create.

az network vnet create \
  --name myVNet \
  --resource-group myResourceGroupAG \
  --location eastus \
  --address-prefix 10.0.0.0/16 \
  --subnet-name myAGSubnet \
  --subnet-prefix 10.0.1.0/24

az network vnet subnet create \
  --name myBackendSubnet \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet \
  --address-prefix 10.0.2.0/24

az network public-ip create \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --allocation-method Static \
  --sku Standard

URL マップを含んだアプリ ゲートウェイを作成するCreate the app gateway with a URL map

az network application-gateway create を使用して、myAppGateway という名前のアプリケーション ゲートウェイを作成します。Use az network application-gateway create to create an application gateway named myAppGateway. Azure CLI を使用してアプリケーション ゲートウェイを作成するときは、容量、SKU、HTTP 設定などの構成情報を指定します。When you create an application gateway using the Azure CLI, you specify configuration information, such as capacity, sku, and HTTP settings. アプリケーション ゲートウェイは、"myAGSubnet" と "myAGPublicIPAddress" に割り当てられます。The application gateway is assigned to myAGSubnet and myAGPublicIPAddress.

az network application-gateway create \
  --name myAppGateway \
  --location eastus \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet \
  --subnet myAGsubnet \
  --capacity 2 \
  --sku Standard_v2 \
  --http-settings-cookie-based-affinity Disabled \
  --frontend-port 80 \
  --http-settings-port 80 \
  --http-settings-protocol Http \
  --public-ip-address myAGPublicIPAddress

アプリケーション ゲートウェイの作成には数分かかる場合があります。It may take several minutes to create the application gateway. アプリケーション ゲートウェイを作成すると、新たに次の機能が確認できます。After the application gateway is created, you can see these new features:

特徴量Feature DescriptionDescription
appGatewayBackendPoolappGatewayBackendPool アプリケーション ゲートウェイには、少なくとも 1 つのバックエンド アドレス プールが必要です。An application gateway must have at least one backend address pool.
appGatewayBackendHttpSettingsappGatewayBackendHttpSettings 通信に使用するポート 80 と HTTP プロトコルを指定します。Specifies that port 80 and an HTTP protocol is used for communication.
appGatewayHttpListenerappGatewayHttpListener appGatewayBackendPool に関連付けられている既定のリスナー。The default listener associated with appGatewayBackendPool
appGatewayFrontendIPappGatewayFrontendIP myAGPublicIPAddress を appGatewayHttpListener に割り当てます。Assigns myAGPublicIPAddress to appGatewayHttpListener.
rule1rule1 appGatewayHttpListener に関連付けられている既定のルーティング規則。The default routing rule that is associated with appGatewayHttpListener.

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

imagesBackendPool および videoBackendPool という名前のバックエンド プールをアプリケーション ゲートウェイに追加するには、az network application-gateway address-pool create を使用します。Add backend pools named imagesBackendPool and videoBackendPool to your application gateway by using az network application-gateway address-pool create. プールのフロントエンド ポートは、az network application-gateway frontend-port create を使用して追加します。You add the frontend port for the pools using az network application-gateway frontend-port create.

az network application-gateway address-pool create \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name imagesBackendPool

az network application-gateway address-pool create \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name videoBackendPool

az network application-gateway frontend-port create \
  --port 8080 \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name port8080

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

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

az network application-gateway http-listener create \
  --name backendListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port port8080 \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway

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

URL パス マップにより、特定の URL が特定のバックエンド プールに確実にルーティングされます。URL path maps ensure that specific URLs are routed to specific backend pools. az network application-gateway url-path-map create および az network application-gateway url-path-map rule create を使用して、imagePathRule および videoPathRule という名前の URL パス マップを作成します。Create URL path maps named imagePathRule and videoPathRule using az network application-gateway url-path-map create and az network application-gateway url-path-map rule create.

az network application-gateway url-path-map create \
  --gateway-name myAppGateway \
  --name myPathMap \
  --paths /images/* \
  --resource-group myResourceGroupAG \
  --address-pool imagesBackendPool \
  --default-address-pool appGatewayBackendPool \
  --default-http-settings appGatewayBackendHttpSettings \
  --http-settings appGatewayBackendHttpSettings \
  --rule-name imagePathRule

az network application-gateway url-path-map rule create \
  --gateway-name myAppGateway \
  --name videoPathRule \
  --resource-group myResourceGroupAG \
  --path-map-name myPathMap \
  --paths /video/* \
  --address-pool videoBackendPool

ルーティングの規則を追加するAdd a routing rule

ルーティング規則は、URL マップを、作成したリスナーに関連付けます。The routing rule associates the URL maps with the listener that you created. az network application-gateway rule create を使用して、rule2 という名前の規則を追加します。Add a rule named rule2 using az network application-gateway rule create.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name rule2 \
  --resource-group myResourceGroupAG \
  --http-listener backendListener \
  --rule-type PathBasedRouting \
  --url-path-map myPathMap \
  --address-pool appGatewayBackendPool

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

この記事では、作成した 3 つのバックエンド プールをサポートする 3 つの仮想マシン スケール セットを作成します。In this article, you create three virtual machine scale sets that support the three backend pools you created. myvmss1myvmss2、および myvmss3 という名前のスケール セットを作成します。You create scale sets named myvmss1, myvmss2, and myvmss3. 各スケール セットには、NGINX をインストールする 2 つの仮想マシン インスタンスが含まれています。Each scale set contains two virtual machine instances where you install NGINX.

for i in `seq 1 3`; do

  if [ $i -eq 1 ]
  then
    poolName="appGatewayBackendPool" 
  fi

  if [ $i -eq 2 ]
  then
    poolName="imagesBackendPool"
  fi

  if [ $i -eq 3 ]
  then
    poolName="videoBackendPool"
  fi

  az vmss create \
    --name myvmss$i \
    --resource-group myResourceGroupAG \
    --image UbuntuLTS \
    --admin-username azureuser \
    --admin-password Azure123456! \
    --instance-count 2 \
    --vnet-name myVNet \
    --subnet myBackendSubnet \
    --vm-sku Standard_DS2 \
    --upgrade-policy-mode Automatic \
    --app-gateway myAppGateway \
    --backend-pool-name $poolName
done

NGINX のインストールInstall NGINX

for i in `seq 1 3`; do
  az vmss extension set \
    --publisher Microsoft.Azure.Extensions \
    --version 2.0 \
    --name CustomScript \
    --resource-group myResourceGroupAG \
    --vmss-name myvmss$i \
    --settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"], "commandToExecute": "./install_nginx.sh" }'
done

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

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

az network public-ip show \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --query [ipAddress] \
  --output tsv

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

URL を http://<IP アドレス>:8080/images/test.html に変更し、<IP アドレス> を使用している IP アドレスに置き換えると、次の例のように表示されるはずです。Change the URL to http://<ip-address>:8080/images/test.html, replacing your IP address for <ip-address>, and you should see something like the following example:

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

URL を http://<IP アドレス>:8080/video/test.html に変更し、<IP アドレス> を使用している IP アドレスに置き換えると、次の例のように表示されるはずです。Change the URL to http://<ip-address>:8080/video/test.html, replacing your IP address for <ip-address>, and you should see something like the following example.

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

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

必要がなくなったら、リソース グループ、アプリケーション ゲートウェイ、およびすべての関連リソースを削除します。When they're no longer needed, remove the resource group, application gateway, and all related resources.

az group delete --name myResourceGroupAG

次のステップNext steps

URL パスベースのリダイレクトのあるアプリケーション ゲートウェイを作成するCreate an application gateway with URL path-based redirection