Azure CLI を使用して、アプリケーション ゲートウェイを作成するときに Web トラフィック リダイレクトを構成できます。 このチュートリアルでは、仮想マシン スケール セットを使用してバックエンド プールを定義します。 次に、所有するドメインに基づいてリスナーとルールを構成し、Web トラフィックが適切なプールに到着することを確認します。 このチュートリアルでは、複数のドメインを所有し、 www.contoso.com と www.contoso.orgの例を使用することを前提としています。
この記事では、次の方法について説明します。
- ネットワークのセットアップ
- アプリケーション ゲートウェイの作成
- リスナーとリダイレクトルールを追加する
- バックエンド プールを使用して仮想マシン スケール セットを作成する
- ドメインの CNAME レコードの作成
Azure アカウントをお持ちでない場合は、開始する前に無料アカウントを作成してください。
[前提条件]
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI 参照コマンドをローカルで実行する場合は、Azure CLI を インストール します。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
メッセージが表示されたら、最初に使用するときに Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
- このチュートリアルには、Azure CLI のバージョン 2.0.4 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。
リソース グループを作成する
リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 az group create を使用してリソース グループを作成します。
次の例では、myResourceGroupAG という名前のリソース グループを eastus に作成します。
az group create --name myResourceGroupAG --location eastus
ネットワーク リソースを作成する
az network vnet create を使用して、myVNet という名前の仮想ネットワークと myAGSubnet という名前のサブネットを作成します。 その後、az network vnet subnet create を使用して、サーバーのバックエンド プールに必要な myBackendSubnet という名前のサブネットを追加できます。 az network public-ip create を使用して myAGPublicIPAddress という名前のパブリック IP アドレスを作成します。
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
アプリケーション ゲートウェイの作成
az network application-gateway create を使用して、myAppGateway という名前のアプリケーション ゲートウェイを作成することができます。 Azure CLI を使用してアプリケーション ゲートウェイを作成するときは、容量、SKU、HTTP 設定などの構成情報を指定します。 このアプリケーション ゲートウェイを、先ほど作成した myAGSubnet と myAGPublicIPAddress に割り当てます。
az network application-gateway create \
--name myAppGateway \
--location eastus \
--resource-group myResourceGroupAG \
--vnet-name myVNet \
--subnet myAGsubnet \
--capacity 2 \
--sku Standard_Medium \
--http-settings-cookie-based-affinity Disabled \
--frontend-port 80 \
--http-settings-port 80 \
--http-settings-protocol Http \
--public-ip-address myAGPublicIPAddress
アプリケーション ゲートウェイの作成には数分かかる場合があります。 アプリケーション ゲートウェイを作成すると、新たに次の機能が確認できます。
- appGatewayBackendPool - アプリケーション ゲートウェイには、少なくとも 1 つのバックエンド アドレス プールが必要です。
- appGatewayBackendHttpSettings - 通信に使用するポート 80 と HTTP プロトコルを指定します。
- appGatewayHttpListener - appGatewayBackendPool に関連付けられている既定のリスナー。
- appGatewayFrontendIP -myAGPublicIPAddress を appGatewayHttpListener に割り当てます。
- rule1 - appGatewayHttpListener に関連付けられている既定のルーティング規則。
リスナーとルールを追加する
アプリケーション ゲートウェイがバックエンド プールにトラフィックを適切にルーティングできるようにするには、リスナーが必要です。 このチュートリアルでは、2 つのドメインに対して 2 つのリスナーを作成します。 この例では、www.contoso.comと www.contoso.org のドメインに対してリスナー が 作成されます。
az network application-gateway http-listener create を使用してトラフィックをルーティングするために必要なバックエンド リスナーを追加します。
az network application-gateway http-listener create \
--name contosoComListener \
--frontend-ip appGatewayFrontendIP \
--frontend-port appGatewayFrontendPort \
--resource-group myResourceGroupAG \
--gateway-name myAppGateway \
--host-name www.contoso.com
az network application-gateway http-listener create \
--name contosoOrgListener \
--frontend-ip appGatewayFrontendIP \
--frontend-port appGatewayFrontendPort \
--resource-group myResourceGroupAG \
--gateway-name myAppGateway \
--host-name www.contoso.org
リダイレクト構成の追加
www.contoso.org からアプリケーション ゲートウェイのリスナー www.contoso.com へトラフィックを送信するリダイレクト構成を追加するために、az network application-gateway redirect-config create を使用します。
az network application-gateway redirect-config create \
--name orgToCom \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--type Permanent \
--target-listener contosoListener \
--include-path true \
--include-query-string true
ルーティング規則の追加
ルールは作成された順序で処理され、トラフィックはアプリケーション ゲートウェイに送信された URL と一致する最初のルールを使用して送信されます。 たとえば、同一のポート上に基本リスナーを使用するルールとマルチサイト リスナーを使用するルールがある場合、マルチサイトのルールを適切に動作させるには、リストでマルチサイト リスナーのルールを基本リスナーのルールよりも先に配置する必要があります。
この例では、2 つの新しいルールを作成し、作成された既定のルールを削除します。 az network application-gateway rule create を使用して、規則を追加することができます。
az network application-gateway rule create \
--gateway-name myAppGateway \
--name contosoComRule \
--resource-group myResourceGroupAG \
--http-listener contosoComListener \
--rule-type Basic \
--address-pool appGatewayBackendPool
az network application-gateway rule create \
--gateway-name myAppGateway \
--name contosoOrgRule \
--resource-group myResourceGroupAG \
--http-listener contosoOrgListener \
--rule-type Basic \
--redirect-config orgToCom
az network application-gateway rule delete \
--gateway-name myAppGateway \
--name rule1 \
--resource-group myResourceGroupAG
仮想マシン スケール セットを作成する
この例では、作成したバックエンド プールをサポートする仮想マシン スケール セットを作成します。 作成するスケール セットは myvmss という名前で、NGINX をインストールする 2 つの仮想マシン インスタンスが含まれています。
az vmss create \
--name myvmss \
--resource-group myResourceGroupAG \
--image Ubuntu2204 \
--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 appGatewayBackendPool
NGINX のインストール
シェル ウィンドウで次のコマンドを実行します。
az vmss extension set \
--publisher Microsoft.Azure.Extensions \
--version 2.0 \
--name CustomScript \
--resource-group myResourceGroupAG \
--vmss-name myvmss \
--settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"],
"commandToExecute": "./install_nginx.sh" }'
ドメインに CNAME レコードを作成する
パブリック IP アドレスを使用してアプリケーション ゲートウェイを作成した後は、DNS アドレスを取得し、これを使用してドメインに CNAME レコードを作成できます。 az network public-ip show を使用して、アプリケーション ゲートウェイの DNS アドレスを取得できます。 DNSSettings の fqdn 値をコピーし、作成した CNAME レコードの値として使用します。 アプリケーション ゲートウェイの再起動時に VIP が変更される可能性があるため、A レコードの使用はお勧めしません。
az network public-ip show \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--query [dnsSettings.fqdn] \
--output tsv
アプリケーション ゲートウェイをテストする
ブラウザーのアドレス バーにドメイン名を入力します。 http://www.contoso.com. などです
http://www.contoso.orgなど、アドレスを他のドメインに変更すると、トラフィックが www.contoso.comのリスナーにリダイレクトされていることがわかります。
次のステップ
このチュートリアルでは、次の方法を学習しました。
- ネットワークのセットアップ
- アプリケーション ゲートウェイの作成
- リスナーとリダイレクトルールを追加する
- バックエンド プールを使用して仮想マシン スケール セットを作成する
- ドメインの CNAME レコードの作成