演習 - Web サイトを作成する

完了

この演習では、内部ロード バランサーの背後に仮想マシンのペアを作成し、車両登録 Web アプリをインストールします。 また、Front Door で仮想マシンへのプライベート接続に使用できるプライベート エンドポイントを使用して仮想ネットワークを構成します。 最後に、免許更新 Web サイトを Azure App Service のインスタンスにデプロイし、Front Door とのプライベート接続も確立します。

仮想マシンを作成して車両登録サイトをデプロイする

  1. ブラウザーで Azure Cloud Shell を開き、リソースを作成するサブスクリプションへのアクセス権を持つディレクトリにサインインします。

  2. Cloud Shell で次のコマンドを実行して、リソース グループ名とリソースのリソース グループを格納する変数を作成します。 <resource group name> をリソース グループの名前に、<location> をリソースをデプロイする Azure リージョンに置き換えます。

    Note

    場所の名前を検索する必要がある場合は、az account list-locations -o table のコマンドを使用できます

    RG=<resource group name>
    az group create --name $RG --location <location>
    
  3. 右側の Cloud Shell ウィンドウで次のコマンドを実行します。 このコマンドでは、Azure のコマンド ライン インターフェイスを使って、vehicleappvnet という名前の仮想ネットワークが作成されます。 それは、10.0.0.0 から 10.0.255.255 の範囲のアドレスを提供するプライベート ネットワークです。 そのコマンドでは、アドレスの範囲が 10.0.1.0 から 10.0.1.255 までである webServerSubnet という名前のサブネットも作成されます。 このサブネットには仮想マシンが含まれます。

    az network vnet create \
        --resource-group $RG \
        --name vehicleAppVnet \
        --address-prefixes 10.0.0.0/16 \
        --subnet-name webServerSubnet \
        --subnet-prefixes 10.0.1.0/24
    
  4. 仮想マシンを作成するスクリプトをダウンロードするには、次のコマンドを実行します。

    git clone https://github.com/MicrosoftDocs/mslearn-load-balance-web-traffic-with-application-gateway module-files
    
  5. ネットワーク セキュリティ グループ (NSG) と NSG ルールを作成し、作成時に Web サーバーに適用します。

    az network nsg create \
        --resource-group $RG \
        --name webNSG
    
    az network nsg rule create \
        --resource-group $RG \
        --nsg-name webNSG \
        --name myNSGRuleHTTP \
        --protocol '*' \
        --direction inbound \
        --source-address-prefix '*' \
        --source-port-range '*' \
        --destination-address-prefix '*' \
        --destination-port-range 80 \
        --access allow \
        --priority 200
    
  6. Web サーバー用の仮想マシンを作成して構成するには、次のコマンドを実行します。 仮想マシンの名前は webServer1webServer2 です。 各仮想マシンでは、Ubuntu Server が実行されます。 各仮想マシンに管理ユーザー アカウントが azureuser というユーザー名で作成されます。 各仮想マシンには、車両登録 Web アプリがインストールされます。

    最初のコマンドは非同期に実行され、両方の仮想マシンを同時に作成できます。

    az vm create \
        --resource-group $RG \
        --name webServer1 \
        --image Ubuntu2204 \
        --admin-username azureuser \
        --generate-ssh-keys \
        --vnet-name vehicleAppVnet \
        --subnet webServerSubnet \
        --public-ip-address "" \
        --nsg webNSG \
        --custom-data module-files/scripts/vmconfig.sh \
        --no-wait
    
    az vm create \
        --resource-group $RG \
        --name webServer2 \
        --image Ubuntu2204 \
        --admin-username azureuser \
        --generate-ssh-keys \
        --vnet-name vehicleAppVnet \
        --subnet webServerSubnet \
        --public-ip-address "" \
        --nsg webNSG \
        --custom-data module-files/scripts/vmconfig.sh
    
  7. 両方の仮想マシンが正常に作成されたことを確認するには、次のコマンドを実行します。

    az vm list \
        --resource-group $RG \
        --show-details \
        --output table
    

    次のような出力が表示されます。 続行する前に、両方の仮想マシンの PowerStateVM running になっていることを確認します。

    Name          ResourceGroup      PowerState    PublicIps    Fqdns    Location        Zones
    ------------  -----------------  ------------  -----------  -------  --------------  -------
    webServer1    MyResourceGroup    VM running                          southcentralus
    webServer2    MyResourceGroup    VM running                          southcentralus
    

内部ロード バランサーを作成し、仮想マシンをバックエンド プールに追加する

  1. 内部ロード バランサー リソースを作成するには、次のコマンドを実行します。

    az network lb create \
        --resource-group $RG \
        --name webServerILB \
        --sku standard \
        --vnet-name vehicleAppVnet \
        --subnet webServerSubnet \
        --frontend-ip-name webServerIP \
        --backend-pool-name webServerBackendPool
    
  2. 正常性プローブを作成して各 VM インスタンスの可用性を確認するには、次のコマンドを実行します。

    az network lb probe create \
        --resource-group $RG \
        --lb-name webServerILB \
        --name webServerHealthProbe \
        --protocol tcp \
        --port 80
    
  3. トラフィックを Web サーバーに分散させる負荷分散規則を作成するには、次のコマンドを実行します。

    az network lb rule create \
        --resource-group $RG \
        --lb-name webServerILB \
        --name myHTTPRule \
        --protocol tcp \
        --frontend-port 80 \
        --backend-port 80 \
        --frontend-ip-name webServerIP \
        --backend-pool-name webServerBackendPool \
        --probe-name webServerHealthProbe \
        --idle-timeout 15 \
        --enable-tcp-reset true
    
  4. 内部ロード バランサーのバックエンド プールに両方の Web サーバーを追加するには、次のコマンドを実行します。

    az network nic ip-config address-pool add \
        --address-pool webServerBackendPool \
        --lb-name webServerILB \
        --ip-config-name ipconfigwebServer1 \
        --nic-name webServer1VMNic \
        --resource-group $RG
    
    az network nic ip-config address-pool add \
        --address-pool webServerBackendPool \
        --lb-name webServerILB \
        --ip-config-name ipconfigwebServer2 \
        --nic-name webServer2VMNic \
        --resource-group $RG
    

Front Door と配信元リソースの間でプライベート通信を確立するには、プライベート リンク サービスが必要です。 プライベート エンドポイントは、Microsoft ネットワークを介して内部接続を実現するために Front Door で確立される接続の接続先です。

  1. プライベート リンク サービスを作成して内部ロード バランサーに関連付けるには、次のコマンドを実行します。 最初のコマンドは、サブネット上のプライベート リンク ネットワーク ポリシーを無効にして、プライベート リンク サービスを作成できるようにします。

    az network vnet subnet update \
        --name webServerSubnet \
        --resource-group $RG \
        --vnet-name vehicleAppVnet \
        --disable-private-link-service-network-policies true
    
    az network private-link-service create \
        --resource-group $RG \
        --name myPrivateLinkService \
        --vnet-name vehicleAppVnet \
        --subnet webServerSubnet \
        --lb-name webServerILB \
        --lb-frontend-ip-configs webServerIP
    
  2. 仮想ネットワークでプライベート エンドポイントを作成するには、次のコマンドを実行します。 このプライベート エンドポイントへの接続を確立するための要求は、自動的に承認されます。

    export resourceid=$(az network private-link-service show \
        --name myPrivateLinkService \
        --resource-group $RG \
        --query id \
        --output tsv)
    
    az network private-endpoint create \
        --connection-name myPEconnectiontoPLS \
        --name myPrivateEndpoint \
        --private-connection-resource-id $resourceid \
        --resource-group $RG \
        --subnet webServerSubnet \
        --manual-request false \
        --vnet-name vehicleAppVnet
    

これで、車両登録 Web アプリを実行する仮想マシンが作成されました。 両方の仮想マシンは同じであり、同じ仮想ネットワークの一部です。 また、内部ロード バランサーの背後にある仮想マシンにアクセスするようにプライベート リンク サービスとプライベート エンドポイントを設定しました。

App Service を作成して免許更新サイトをデプロイする

  1. 最初に、Web サイトの一意の名前を生成するために、次のコマンドを実行します。

    APPSERVICE="licenserenewal$RANDOM"
    
  2. 次に、以下のコマンドを実行して、Web アプリで使用する App Service プランを作成します。

    az appservice plan create \
        --resource-group $RG \
        --name vehicleAppServicePlan \
        --location eastus \
        --sku FREE
    
  3. 最後に、Web アプリを作成し、免許更新サイトをデプロイします。

    az webapp create \
        --resource-group $RG \
        --name $APPSERVICE \
        --plan vehicleAppServicePlan \
        --deployment-source-url https://github.com/MicrosoftDocs/mslearn-load-balance-web-traffic-with-application-gateway \
        --deployment-source-branch appService
    

次に、Front Door の構成について詳しく見てみましょう。