クイック スタート:Azure Application Gateway による Web トラフィックの転送 - Azure CLIQuickstart: Direct web traffic with Azure Application Gateway - Azure CLI

このクイックスタートでは、Azure CLI を使用してアプリケーション ゲートウェイを作成します。In this quickstart, you use Azure CLI to create an application gateway. さらに、それをテストし、正しく動作することを確認します。Then you test it to make sure it works correctly.

アプリケーション ゲートウェイは、アプリケーション Web トラフィックをバックエンド プール内の特定のリソースに転送します。The application gateway directs application web traffic to specific resources in a backend pool. リスナーをポートに割り当て、ルールを作成し、リソースをバックエンド プールに追加します。You assign listeners to ports, create rules, and add resources to a backend pool. わかりやすくするために、この記事では、パブリック フロントエンド IP、アプリケーション ゲートウェイで単一サイトをホストするための基本リスナー、基本要求ルーティング規則、およびバックエンド プール内の 2 つの仮想マシンを使用する簡単な設定を使用します。For the sake of simplicity, this article uses a simple setup with a public front-end IP, a basic listener to host a single site on the application gateway, a basic request routing rule, and two virtual machines in the backend pool.

また、Azure PowerShell または Azure portal を使用してこのクイックスタートを完了することもできます。You can also complete this quickstart using Azure PowerShell or the Azure portal.

Azure Cloud Shell を使用するUse Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。You can use either Bash or PowerShell with Cloud Shell to work with Azure services. ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell を開始するには:To start Azure Cloud Shell:

オプションOption 例とリンクExample/Link
コード ブロックの右上隅にある [使ってみる] を選択します。Select Try It in the upper-right corner of a code block. [使ってみる] を選択しても、コードは Cloud Shell に自動的にコピーされません。Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell の [使ってみる] の例
https://shell.azure.com に移動するか、 [Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. 新しいウィンドウで Cloud Shell を起動するLaunch Cloud Shell in a new window
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Azure Portal の [Cloud Shell] ボタン

Azure Cloud Shell でこの記事のコードを実行するには:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell を開始します。Start Cloud Shell.

  2. [コピー] ボタンを選択して、コード ブロックをコードにコピーします。Select the Copy button on a code block to copy the code.

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードを Cloud Shell セッションに貼り付けます。Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Enter キーを選択して、コードを実行します。Select Enter to run the code.

前提条件Prerequisites

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

Azure で、関連するリソースをリソース グループに割り当てます。In Azure, you allocate related resources to a resource group. az group create を使用して、リソース グループを作成します。Create a resource group by 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

お客様が作成するリソースの間で Azure による通信が行われるには、仮想ネットワークが必要です。For Azure to communicate between the resources that you create, it needs a virtual network. アプリケーション ゲートウェイ サブネットには、アプリケーション ゲートウェイのみを含めることができます。The application gateway subnet can contain only application gateways. その他のリソースは許可されません。No other resources are allowed. Application Gateway 用に新しいサブネットを作成するか、既存のサブネットを使用することができます。You can either create a new subnet for Application Gateway or use an existing one. この例では 2 つのサブネットを作成します。1 つはアプリケーション ゲートウェイ用で、もう 1 つはバックエンド サーバー用です。In this example, you create two subnets: one for the application gateway, and another for the backend servers. ユース ケースに従って、Application Gateway のフロントエンド IP を [パブリック] または [プライベート] に設定できます。You can configure the Frontend IP of the Application Gateway to be Public or Private as per your use case. この例では、パブリック フロントエンド IP アドレスを選択します。In this example, you'll choose a Public Frontend IP address.

仮想ネットワークとサブネットを作成するには、az network vnet create を使用します。To create the virtual network and subnet, use az network vnet create. az network public-ip create を実行して、パブリック IP アドレスを作成します。Run az network public-ip create to create the public IP address.

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

バックエンド サーバーを作成するCreate the backend servers

バックエンドには、NIC、仮想マシン スケール セット、パブリック IP、内部 IP、完全修飾ドメイン名 (FQDN)、Azure App Service などのマルチテナント バックエンドを含めることができます。A backend can have NICs, virtual machine scale sets, public IPs, internal IPs, fully qualified domain names (FQDN), and multi-tenant back-ends like Azure App Service. この例では、アプリケーション ゲートウェイのバックエンド サーバーとして使用する 2 つの仮想マシンを作成します。In this example, you create two virtual machines to use as backend servers for the application gateway. また、アプリケーション ゲートウェイをテストするために、仮想マシン上に IIS もインストールします。You also install IIS on the virtual machines to test the application gateway.

2 つの仮想マシンの作成Create two virtual machines

アプリケーション ゲートウェイが正常に作成されたことを確認するには、仮想マシンに NGINX Web サーバーをインストールします。Install the NGINX web server on the virtual machines to verify the application gateway was successfully created. cloud-init 構成ファイルを使って、NGINX をインストールし、Linux 仮想マシンで "Hello World" Node.js アプリを実行することができます。You can use a cloud-init configuration file to install NGINX and run a "Hello World" Node.js app on a Linux virtual machine. cloud-init の詳細については、「Azure での仮想マシンに対する cloud-init のサポート」を参照してください。For more information about cloud-init, see Cloud-init support for virtual machines in Azure.

Azure Cloud Shell で、次の構成をコピーして、cloud-init.txt という名前のファイルに貼り付けます。In your Azure Cloud Shell, copy and paste the following configuration into a file named cloud-init.txt. editor cloud-init.txt」と入力してファイルを作成します。Enter editor cloud-init.txt to create the file.

#cloud-config
package_upgrade: true
packages:
  - nginx
  - nodejs
  - npm
write_files:
  - owner: www-data:www-data
  - path: /etc/nginx/sites-available/default
    content: |
      server {
        listen 80;
        location / {
          proxy_pass http://localhost:3000;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection keep-alive;
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
        }
      }
  - owner: azureuser:azureuser
  - path: /home/azureuser/myapp/index.js
    content: |
      var express = require('express')
      var app = express()
      var os = require('os');
      app.get('/', function (req, res) {
        res.send('Hello World from host ' + os.hostname() + '!')
      })
      app.listen(3000, function () {
        console.log('Hello world app listening on port 3000!')
      })
runcmd:
  - service nginx restart
  - cd "/home/azureuser/myapp"
  - npm init
  - npm install express -y
  - nodejs index.js

az network nic create を使用して、ネットワーク インターフェイスを作成します。Create the network interfaces with az network nic create. 仮想マシンを作成するには、az vm create を使用します。To create the virtual machines, you use az vm create.

for i in `seq 1 2`; do
  az network nic create \
    --resource-group myResourceGroupAG \
    --name myNic$i \
    --vnet-name myVNet \
    --subnet myBackendSubnet
  az vm create \
    --resource-group myResourceGroupAG \
    --name myVM$i \
    --nics myNic$i \
    --image UbuntuLTS \
    --admin-username azureuser \
    --generate-ssh-keys \
    --custom-data cloud-init.txt
done

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

az network application-gateway create を使用して、アプリケーション ゲートウェイを作成します。Create an application gateway using az network application-gateway create. Azure CLI を使用してアプリケーション ゲートウェイを作成するときは、容量、SKU、HTTP 設定などの構成情報を指定します。When you create an application gateway with the Azure CLI, you specify configuration information, such as capacity, SKU, and HTTP settings. すると、Azure により、ネットワーク インターフェイスのプライベート IP アドレスが、アプリケーション ゲートウェイのバックエンド プールにサーバーとして追加されます。Azure then adds the private IP addresses of the network interfaces as servers in the backend pool of the application gateway.

address1=$(az network nic show --name myNic1 --resource-group myResourceGroupAG | grep "\"privateIpAddress\":" | grep -oE '[^ ]+$' | tr -d '",')
address2=$(az network nic show --name myNic2 --resource-group myResourceGroupAG | grep "\"privateIpAddress\":" | grep -oE '[^ ]+$' | tr -d '",')
az network application-gateway create \
  --name myAppGateway \
  --location eastus \
  --resource-group myResourceGroupAG \
  --capacity 2 \
  --sku Standard_v2 \
  --http-settings-cookie-based-affinity Enabled \
  --public-ip-address myAGPublicIPAddress \
  --vnet-name myVNet \
  --subnet myAGSubnet \
  --servers "$address1" "$address2"

Azure によってアプリケーション ゲートウェイが作成されるのに最大 30 分かかる場合があります。It can take up to 30 minutes for Azure to create the application gateway. 作成後は、 [アプリケーション ゲートウェイ] ページの [設定] セクションで次の設定を確認できます。After it's created, you can view the following settings in the Settings section of the Application gateway page:

  • appGatewayBackendPool: [バックエンド プール] ページにあります。appGatewayBackendPool: Located on the Backend pools page. これは、必要なバックエンド プールを指定します。It specifies the required backend pool.
  • appGatewayBackendHttpSettings: [HTTP 設定] ページにあります。appGatewayBackendHttpSettings: Located on the HTTP settings page. これは、アプリケーション ゲートウェイがポート 80 を使用すること、および通信に HTTP プロトコルを使用することを指定します。It specifies that the application gateway uses port 80 and the HTTP protocol for communication.
  • appGatewayHttpListener: [リスナー] ページにあります。appGatewayHttpListener: Located on the Listeners page. これは、appGatewayBackendPool に関連付けられている既定のリスナーを指定します。It specifies the default listener associated with appGatewayBackendPool.
  • appGatewayFrontendIP: [フロントエンド IP 構成] ページにあります。appGatewayFrontendIP: Located on the Frontend IP configurations page. これは、myAGPublicIPAddressappGatewayHttpListener に割り当てます。It assigns myAGPublicIPAddress to appGatewayHttpListener.
  • rule1: [ルール] ページにあります。rule1: Located on the Rules page. appGatewayHttpListener に関連付けられている既定のルーティング規則を指定します。It specifies the default routing rule that's associated with appGatewayHttpListener.

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

Azure はアプリケーション ゲートウェイを作成するために NGINX Web サーバーを必要としませんが、このクイック スタートでは、Azure によってアプリケーション ゲートウェイが正常に作成されたかどうかを確認するために、NGINX をインストールしました。Although Azure doesn't require an NGINX web server to create the application gateway, you installed it in this quickstart to verify whether Azure successfully created the application gateway. 新しいアプリケーション ゲートウェイのパブリック IP アドレスを取得するには、az network public-ip show を使用します。To get the public IP address of the new application gateway, use az network public-ip show.

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

そのパブリック IP アドレスをコピーし、ブラウザーのアドレス バーに貼り付けます。Copy and paste the public IP address into the address bar of your browser.

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

ブラウザーを更新すると、2 番目の VM の名前が表示されるはずです。When you refresh the browser, you should see the name of the second VM. これは、アプリケーション ゲートウェイが正常に作成され、バックエンドに正常に接続できることを示しています。This indicates the application gateway was successfully created and can connect with the backend.

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

アプリケーション ゲートウェイと共に作成したリソースが不要になったら、az group delete コマンドを使用してリソース グループを削除します。When you no longer need the resources that you created with the application gateway, use the az group delete command to delete the resource group. リソース グループを削除すると、アプリケーション ゲートウェイとそのすべての関連リソースも削除されます。When you delete the resource group, you also delete the application gateway and all its related resources.

az group delete --name myResourceGroupAG

次のステップNext steps