演習 - Virtual Machine Scale Sets でアプリケーションを更新する

完了

運送会社のシナリオでは、仮想マシン スケール セットを作成して、Web アプリケーションをインストールしました。 ここでは、Web アプリを更新し、スケール セット内のすべての VM に新しいバージョンをインストールする必要があります。

ロールアウトの間も、システムを引き続き確実に使用できるようにする必要があります。 可用性を確保するよい方法は、カスタム スクリプト拡張機能を使用して更新を行うことです。 このスクリプトを仮想マシン スケール セット全体に適用します。 スケール セットでは、一度に 1 台の VM に更新プログラムが適用され、他の VM は稼働したままになります。

この演習では、カスタム スクリプト拡張機能を使用して、Web アプリの新しいバージョンをロール アウトします。 nginx サーバーによって提供されるメッセージを編集します。 さらに大きい更新にも同じ方法を使用できます。

注意

この演習は省略してもかまいません。 Azure アカウントをお持ちでない場合は、説明を最後までお読みになり、REST API を使用してメトリックを取得する方法を理解してください。

この演習を完了する必要があるものの、Azure サブスクリプションをお持ちでない場合、またはご自分のアカウントを使用したくない場合は、始める前に無料アカウントを作成してください。

カスタム スクリプト拡張機能を使用して更新プログラムをデプロイする

  1. Azure portal で、Cloud Shell を開き、次のコマンドを実行して、スケール セットの現在のアップグレード ポリシーを表示します。

    az vmss show \
        --name webServerScaleSet \
        --resource-group myResourceGroup \
        --query upgradePolicy.mode
    

    アップグレード ポリシーが、Automatic に設定されていることを確認します。 このポリシーは、最初の課題でスケール セットを作成したときに指定したものです。 ポリシーが Manual だった場合は、手動で VM の変更を適用します。 ポリシーが Automatic なので、カスタム スクリプト拡張機能を使用でき、スケール セットで更新を行うことができます。

  2. 次のコマンドを実行して、更新スクリプトを適用します。

    az vmss extension set \
        --publisher Microsoft.Azure.Extensions \
        --version 2.0 \
        --name CustomScript \
        --vmss-name webServerScaleSet \
        --resource-group myResourceGroup \
        --settings "{\"commandToExecute\": \"echo This is the updated app installed on the Virtual Machine Scale Set ! > /var/www/html/index.html\"}"
    

更新した Web アプリケーションをテストする

  1. 次のコマンドを実行して、スケール セット用のロード バランサーの IP アドレスを取得します。

    az network public-ip show \
        --name webServerScaleSetLBPublicIP \
        --resource-group myResourceGroup \
        --output tsv \
        --query ipAddress
    
  2. Web ブラウザーで、スケール セットのロード バランサーのパブリック アドレスに移動します。 This is the updated app installed on the Virtual Machine Scale Set (これは仮想マシン スケール セットにインストールされている更新されたアプリです) というメッセージが表示されることを確認します。

    更新された Web アプリのスクリーンショット。