Azure の仮想マシンとスケール セットの拡張機能の自動アップグレード

拡張機能の自動アップグレードは、Azure Virtual Machines と Azure Virtual Machine Scale Sets で利用できます。 仮想マシン (VM) またはスケール セットで拡張機能の自動アップグレードが有効になっていると、拡張機能の発行元がその拡張機能の新しいバージョンをリリースするたびに、拡張機能が自動的にアップグレードされます。

拡張機能の自動アップグレードには、次の機能があります。

  • Azure VM と仮想マシン スケール セットがサポートされています。
  • アップグレードは、可用性優先のデプロイ モデルで適用されます。
  • 仮想マシン スケール セットの場合、1 回のバッチに含まれるスケール セット VM のアップグレードは 20% 以下です。 最小バッチ サイズは 1 VM です。
  • すべての VM サイズと Windows と Linux の両方の拡張機能は互換性があります。
  • 自動アップグレードはオプションであり、いつでも選択できます。
  • 任意のサイズの仮想マシン スケール セットが有効になります。
  • サポートされている各拡張機能は個別に登録されます。 自動的にアップグレードする拡張機能を選択できます。
  • すべてのパブリック クラウド リージョンがサポートされています。

拡張機能の自動アップグレードのしくみ

拡張機能のアップグレード プロセスでは、拡張機能の発行元が同じ拡張機能の新しいバージョンを発行するたびに、VM 上の既存の拡張機能のバージョンが置き換えられます。 新しい拡張機能がインストールされた後、VM の正常性が監視されます。 アップグレードが完了してから 5 分以内に VM が正常な状態にならない場合、拡張機能のバージョンは前のバージョンにロールバックされます。

拡張機能のアップグレードが失敗した場合は、自動的に再試行されます。 再試行は、ユーザーの介入なしに、数日に 1 回試行されます。

可用性優先の更新

プラットフォームの調整されたアップグレードの可用性優先モデルにより、Azure の可用性構成が複数の可用性レベルで尊重されます。

アップグレード中の VM のグループに対して、Azure プラットフォームは、リージョン全体、リージョン内、セット内のアップグレードを調整します。

複数のリージョン間

  • Azure 全体でデプロイが失敗するのを防ぐために、アップグレードは Azure 全体を段階的に移動します。
  • 1 つのフェーズには 1 つ以上のリージョンを含めることができます。前のフェーズで対象の VM が正常にアップグレードされた場合にのみ、アップグレードはフェーズ間を移動します。
  • geo ペア リージョンは同時にアップグレードされず、同じリージョン フェーズに置くことはできません。
  • アップグレードの成功は、アップグレード後に VM の正常性を追跡することによって測定できます。 VM の正常性は、VM のプラットフォーム正常性インジケーターによって追跡されます。 仮想マシン スケール セットの場合、VM の正常性は、アプリケーション正常性プローブまたはアプリケーション正常性拡張機能によって追跡されます (スケール セットに適用される場合)。

リージョン内

  • 異なる可用性ゾーンにある VM が、同じアップグレードで同時にアップグレードされることはありません。
  • 可用性セットに含まれていない単一の VM は、サブスクリプション内のすべての VM の同時アップグレードを回避するために、ベストエフォート ベースでバッチ処理されます。

セット内

  • 共通の可用性セット内またはスケール セット内のすべての VM が同時にアップグレードされることはありません。
  • 共通の可用性セット内の VM は、更新ドメインの境界内でアップグレードされます。 複数の更新ドメインにまたがる VM が同時にアップグレードされることはありません。
  • 共通の仮想マシン スケール セット内の VM は、バッチにグループ化され、更新ドメイン境界内でアップグレードされます。 スケール セットで定義されているアップグレード ポリシーは、アップグレード中に適用されます。 各グループは、ローリング アップグレード戦略を使用してアップグレードされます。

仮想マシン スケール セットのアップグレード プロセス

  • アップグレード プロセスが始まる前に、オーケストレーターによって、異常 (何らかの理由による) な VM がスケール セット全体の 20% を超えていないことが確認されます。
  • アップグレード オーケストレーターによってアップグレードする VM インスタンス バッチが識別されます。 1 つのアップグレード バッチには、VM の最小バッチ サイズに基づき、VM 合計数の最大 20% を含めることができます。 オーケストレーターは、バッチを特定する際に、アップグレード ポリシーと可用性ゾーンの定義を検討します。
  • アップグレード後、VM の正常性は、次のバッチに移行する前に常に監視されます。 アプリケーション正常性プローブまたはアプリケーション正常性拡張機能が構成されたスケール セットの場合、アプリケーション正常性も監視されます。 アップグレードでは、VM が正常になるまで 5 分間 (または定義されている正常性プローブ構成だけ) 待機した後、次のバッチがアップグレードされます。 アップグレード後に VM の正常性が回復しない場合は、既定で、VM の前のバージョンの拡張機能が再インストールされます。
  • また、アップグレード オーケストレーターにより、アップグレード後に異常が発生した VM の割合も追跡されます。 アップグレード処理中に異常なアップグレード済みインスタンスの割合が 20% を超えた場合は、アップグレードが停止します。

このプロセスは、スケール セット内のすべてのインスタンスがアップグレードされるまで続行されます。

スケール セットのアップグレード オーケストレーターにより、各バッチをアップグレードする前に、スケール セット全体の正常性が確認されます。 バッチ アップグレード中は、他の並列して実行される計画的または計画外のメンテナンス アクティビティがスケール セット VM の正常性に影響を与える可能性があります。 そのような場合、スケール セットのインスタンスの 20% より多くが異常な状態になると、スケール セットのアップグレードは現在のバッチが終了した時点で停止します。

サポートされる拡張機能

拡張機能の自動アップグレードでは、次の拡張機能がサポートされています (さらに多くの拡張機能が定期的に追加されます)。


拡張機能の自動アップグレードを有効にする

拡張機能の自動アップグレードを拡張機能に対して有効にするには、プロパティ enableAutomaticUpgradetrue に設定され、各拡張機能の定義に個別に追加されていることを確認する必要があります。

Azure portal を使用する

Azure portal の [拡張機能] ペインを使用して、既存の VM と仮想マシン スケール セットの拡張機能の自動アップグレードを有効にします。

  1. [仮想マシン] または [仮想マシン スケール セット] ペインに移動し、リソース名を選択します。

  2. [設定][拡張機能とアプリケーション] ペインに移動します。ここには、リソースにインストールされているすべての拡張機能が表示されます。 [自動アップグレードの状態] 列には、拡張機能の自動アップグレードが有効か無効か、またはサポートされていないかが表示されます。

  3. 拡張機能の名前を選択して、[拡張機能] 詳細ウィンドウを開きます。

    Azure portal の [拡張機能] ペインを示すスクリーンショット。

  4. [自動アップグレードを有効にする] を選択して、拡張機能の自動アップグレードを有効にします。 必要に応じて、このボタンを使用して自動アップグレードを無効にします。

    Azure portal の [自動アップグレードを有効にする] を示すスクリーンショット。

仮想マシンの場合

Azure VM で拡張機能 (この例では Dependency Agent 拡張機能) に対して拡張機能の自動アップグレードを有効にするには、次の呼び出しを使用します。

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/extensions/<extensionName>?api-version=2019-12-01`
{    
    "name": "extensionName",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "<location>",
    "properties": {
        "autoUpgradeMinorVersion": true,
        "enableAutomaticUpgrade": true, 
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.5"
        }
}

仮想マシン スケール セットの場合

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>?api-version=2019-12-01`
{
   "location": "<location>",
   "properties": {
   	    "virtualMachineProfile": {
            "extensionProfile": {
       	        "extensions": [
            	{
                "name": "<extensionName>",
            	  "properties": {
             		    "autoUpgradeMinorVersion": true,
             		    "enableAutomaticUpgrade": true,
              	    "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
              	    "type": "DependencyAgentWindows",
              	    "typeHandlerVersion": "9.5"
            		}
          	    }
        	    ]
    	    }
    	}
    }
}

Note

これらの操作によって、仮想マシン スケール セット リソースの enableAutomaticUpgrade プロパティは true に設定されますが、基盤の VM には適用されません。

仮想マシン スケール セットが upgradeProfile で自動またはローリング アップグレード モードを定義している場合、変更は仮想マシン スケール セットから基盤の各 VM に自動的に伝達されます。

仮想マシン スケール セットが upgradeProfile で手動モードを定義している場合は、各インスタンスを手動で更新し、基盤の各 VM に変更を伝達する必要もあります。


複数の拡張機能での拡張機能のアップグレード

VM または仮想マシン スケール セットに複数の拡張機能を追加し、その拡張機能の自動アップグレードを有効にできます。 同じ VM またはスケール セットに他の拡張機能を追加し、その拡張機能自動アップグレードを有効にしないこともできます。

1 つの VM で拡張機能のアップグレードを複数使用できる場合、アップグレードをバッチにまとめられる場合がありますが、VM では各拡張機能のアップグレードが個々に適用されます。 1 つの拡張機能での失敗は、アップグレードの最中であるかもしれない他の拡張機能には影響しません。 たとえば、2 つの拡張機能のアップグレードがスケジュールされていて、最初の拡張機能のアップグレードが失敗した場合でも、2 つ目の拡張機能はアップグレードされます。

VM または仮想マシン スケール セットに拡張機能のシーケンス処理を使用して複数の拡張機能が構成されている場合は、拡張機能の自動アップグレードも適用できます。 拡張機能のシーケンス処理は、VM の初回デプロイ用です。 拡張機能に対する今後の拡張機能のアップグレードは、個別に適用されます。

EnableAutomaticUpgrade と AutoUpgradeMinorVersion の違い

  • AutoUpgradeMinorVersion:

    • このプロパティは、VM の作成時と、新しい構成で VM をアップグレードするときに使用されます。
    • true に設定すると、拡張機能の最新のマイナー バージョンが VM に自動的にインストールされます。
    • 使用できる最新の安定したマイナー バージョンで TypeHandlerVersion をオーバーライドします。
    • VM 構成をアップグレードするときに、新しいマイナー バージョンがリリースされている場合、それは構成の変更と見なされます。 拡張機能は、最新のマイナー バージョンで再インストールされます。
    • このようにして、新しく作成された VM は、最新の安定したマイナー拡張機能バージョンで最新の状態に保たれます。
    • 拡張機能を特定のバージョンに手動で設定する場合は、このプロパティを false に設定します。
  • EnableAutomaticUpgrade:

    • このプロパティは既存の VM に影響します。
    • VM の作成時にインストールされたバージョンには影響しません。
    • VM の作成後、VM が拡張機能の最新マイナー バージョンを実行していない場合、このプロパティを有効にすると自動アップグレードがトリガーされます。
    • アップグレードによって VM が再起動されることはなく、安全なローリング方法でロールアウトされます。 失敗したアップグレードはすぐにロールバックされ、高いサービス可用性と信頼性を実現できます。
    • 既存の VM は、最新のマイナー バージョンに自動的に更新されるため、セキュリティで保護された最新の状態に保たれます。

すべての VM をセキュリティで保護された最新の状態に保つために、両方のプロパティを有効にすることをお勧めします。

メジャー バージョンには破壊的変更が含まれる可能性があるため、どちらのプロパティでも拡張機能のメジャー バージョンへのアップグレードが自動的に実行されることはありません。 TypeHandlerVersion をメジャー バージョンに手動で設定し、既存の各 VM を最新のメジャー バージョンに手動でアップグレードする必要があります。

次のステップ