Azure VM イメージ ビルダーの信頼性

Azure VM Image Builder は、仮想マシン (VM) イメージをビルドしてカスタマイズし、結果のイメージを Azure コンピューティング ギャラリーやAzure Blob Storageの仮想ハード ディスク (VHD) などのターゲットに配布するマネージド サービスです。 このサービスでは、長期間稼働するビルド インフラストラクチャを維持する必要はありません。

Azureを使用する場合、信頼性は共有責任です。 Microsoftには、回復性と回復性をサポートするためのさまざまな機能が用意されています。 使用するすべてのサービスでこれらの機能がどのように機能するかを理解し、ビジネス目標とアップタイムの目標を達成するために必要な機能を選択する必要があります。

この記事では、一時的な障害、可用性ゾーンの障害、リージョン全体の障害、サービス メンテナンスなど、さまざまな潜在的な障害や問題に対して Azure VM Image Builder の回復性を高める方法について説明します。 また、バックアップと復元のオプション、カスタム マルチリージョン ソリューション、Azure VM Image Builder サービス レベル アグリーメント (SLA) に関する重要な情報についても説明します。

運用環境のデプロイに関する推奨事項

運用イメージ構築パイプラインを設計する場合は、次の推奨事項を考慮してください。

  • Bicep や Terraform などの IaC を使用してイメージ テンプレートを定義し、ソース管理に定義を格納します。

  • VM の作成、スケールアウト、再イメージ化の操作中に不要なリージョン間の依存関係を回避するために、Azure Compute Gallery レプリケーションなどを通じて、ワークロードが実行されているリージョンに完成したイメージを配布します。

  • カスタマイズ スクリプト、パッケージ、およびその他のビルド依存関係を、ワークロードに必要な冗長性特性を持つストレージに格納します。

信頼性アーキテクチャの概要

このセクションでは、信頼性の観点から最も関連性の高いサービスのしくみの重要な側面について説明します。 このセクションでは、デプロイして使用するリソースと機能の一部を含む論理アーキテクチャについて説明します。 また、物理アーキテクチャについても説明します。このアーキテクチャでは、サービスの内部での動作について詳しく説明します。

論理アーキテクチャ

VM Image Builder を使用する場合は、イメージ テンプレートを 1 つのAzure リージョンにデプロイします。これはテンプレートのホーム リージョンになります。

テンプレートを作成したら、VM イメージを作成するための一連の手順を実行するビルドを 実行 します。 これらの手順では、スクリプトを実行したり、イメージに埋め込むパッケージを含めたりする場合があります。

サービスはステージング リソース グループを作成または使用し、サブスクリプションにビルド インフラストラクチャをデプロイします。 ビルド後、サービスは、ビルド VM や関連するネットワーク リソースを含む一時的なリソースを削除します。 ステージング リソース グループとそのストレージ リソースは、イメージ テンプレート リソースが存在する限り保持されます。

VM Image Builder は、指定した 1 つ以上の ターゲット に完成したイメージを配布します。 一般的なターゲットは次のとおりです。

  • Azure Compute Gallery (旧称 Shared Image Gallery): コンピューティング ギャラリーは、VM イメージのマルチリージョン レプリケーションを提供します。 たとえば、1 つのリージョンにイメージをビルドし、結果の Azure Compute Gallery イメージ バージョンを複数のターゲット リージョンに配布できます。

  • Azure Blob Storage: サービスは、VM Image Builder がデプロイするストレージ アカウント、または指定したストレージ アカウントと BLOB コンテナーに VHD を格納できます。

    サービスで管理されるストレージ アカウントを VHD 配布先として使用する場合、サービスは VHD をステージング リソース グループに格納します。 イメージ テンプレートを削除すると、サービスによって VHD も削除されます。 イメージ テンプレートとは別に VHD を保持するには、テンプレートを削除する前に、VHD をカスタム ストレージ アカウントに配布するか、別の場所にコピーします。

Azure コンピューティング ギャラリーとBlob Storageは、VM Image Builder とは別のサービスです。 異なるAzureリージョンのターゲットを含め、複数のターゲットにイメージを配布できます。 この配布モデルは、イメージを構築するリージョンと、そのイメージを使用するリージョンを分離するのに役立ちます。

Note

VM Image Builder では、レガシ配布ターゲットである マネージド イメージもサポートされています。 この記事では、マネージド イメージは扱いません。 運用環境のシナリオでは、Azure Compute Gallery を使用します。

物理アーキテクチャ

VM Image Builder は 分離イメージ ビルド を使用して、コア イメージのカスタマイズと検証プロセスを実行します。 このサービスは、サブスクリプションのステージング リソース グループに専用のAzure Container Instances リソースとビルド VM をデプロイします。 Container Instances リソースは HashiCorp Packer を実行してイメージをカスタマイズおよび検証し、VM Image Builder がビルドを調整します。

イメージ ビルドを実行するには、Microsoft.ContainerInstance リソース プロバイダーを登録し、サブスクリプションに十分なContainer Instances クォータがあることを確認してください。 サービス アーキテクチャ、サポートされているリージョン、およびビルド プロセスの詳細については、「Azure VM Image Builder の概要」を参照してください。

Azure Compute Gallery や Blob Storage などの個別の Azure サービスは、完成したイメージを格納します。 回復性の要件を満たすように各配布ターゲットを構成します。

一時的な障害に対する回復性

一時的な障害は、コンポーネントにおける短い断続的な障害です。 これらはクラウドのような分散環境で頻繁に発生し、運用の通常の範囲であり、 一時的な障害は、短時間の経過後に自分自身を修正します。 アプリケーションで一時的な障害を処理できることは重要です。通常は、影響を受ける要求を再試行します。

クラウドでホストされるすべてのアプリケーションは、クラウドでホストされている API、データベース、およびその他のコンポーネントと通信する際に、Azure の一時的な障害処理のガイダンスに従う必要があります。 詳細については、一時的なエラーへの対処に関するレコメンデーションを参照してください。

通常、Azure ポータル、Azure CLI、Azure PowerShell、または Bicep などのコードとしてのインフラストラクチャを使用して、Azure VM イメージ ビルダーを使用します。 ビルド パイプラインは、一時的なエラーを処理する役割を担います。 Azure Resource Managerが一時的なエラー応答を返す場合は、適切なバックオフで要求を再試行してください。

ビルドが失敗した場合は、再実行する前に、その lastRunStatus ログ、カスタマイズと検証のログ、配布実行の出力を調べます。 これらの詳細は、一時的な障害状態、カスタマイズ手順、またはイメージ配布操作によってエラーが発生したかどうかを判断するのに役立ちます。 詳細については、「 VM Image Builder のビルドエラーのトラブルシューティング」を参照してください。

ビルド操作は、ストレージ アカウント、パッケージ リポジトリ、ソース イメージの場所、配布ターゲットなどの外部システムにも依存できます。 一時的なネットワーク、プラットフォーム、または依存関係の問題の後の再試行をサポートするように、カスタマイズ手順とパイプラインを設計します。

可用性ゾーンの障害に対する回復性

ビルド操作と完成したイメージは、ゾーンの障害時に動作が異なります。

  • ビルド: VM Image Builder は可用性ゾーンをサポートせず、イメージ テンプレートまたはビルド操作にゾーンの回復性の保証を提供しません。 ゾーン障害がビルドで使用されるリソースに影響を与える場合、ビルドの開始に失敗したり、中断されたりする可能性があります。 VM イメージ ビルダーは、ビルドを別のゾーンに自動的に移動しません。

    ゾーン障害時にイメージ ビルドを実行する必要がある場合は、イメージ テンプレートとサポート リソースを複数の Azure リージョンにデプロイします。 詳細については、「 回復性のためのカスタム マルチリージョン ソリューション」を参照してください。

  • 画像: 完成したイメージは、ストレージにゾーン回復性がある場合、引き続き利用可能です。

    • Azure コンピューティング ギャラリー: Azureコンピューティング ギャラリー イメージ バージョンでは、可用性ゾーンをサポートするターゲット リージョンでゾーン冗長ストレージ (ZRS) を使用できます。 ターゲット リージョンごとに、ストレージ アカウントのレプリケーションの種類として ZRS を選択します。 既定値はローカル冗長ストレージ (LRS) であり、ゾーン障害に対する回復性はありません。 詳細については、「Azure Compute Gallery の高可用性」を参照してください。

    • Azure Blob Storageの VHD: カスタム ストレージ アカウントを使用しない場合、VM Image Builder は可用性ゾーンをサポートするリージョンに既定で ZRS ストレージ アカウントを作成します。 カスタム ストレージ アカウントを使用する場合は、お客様の責任で、要件を満たすように冗長性を構成する必要があります。 ZRS を使用して、複数の可用性ゾーンに VHD のコピーを格納します。 ZRS のしくみの詳細については、「Azure Blob Storageの信頼性」を参照してください。

リージョン全体の障害に対する回復性

ビルド操作と完成したイメージは、リージョン全体の障害時に動作が異なります。

  • ビルド: Azure VM Image Builder は単一リージョン サービスであり、組み込みのマルチリージョン フェールオーバーは提供されません。 イメージ テンプレートをホストするリージョンが使用できなくなった場合、そのリージョンのイメージ テンプレートとビルド操作も使用できなくなります。 サービスが別のリージョンに自動的にフェールオーバーされることはありません。

    リージョンの停止中にイメージ ビルドを実行する必要がある場合は、イメージ テンプレートとサポート リソースを複数のAzure リージョンにデプロイします。 詳細については、「 回復性のためのカスタム マルチリージョン ソリューション」を参照してください。

  • 画像: 完成したイメージは、ストレージがリージョン全体の障害に対して回復性がある場合、引き続き利用可能です。

    • Azure Compute Gallery: Azure Compute Gallery を構成して、イメージ バージョンを複数のリージョンにレプリケートできます。 レプリケーションは非同期であり、ターゲット リージョンのイメージ バージョンは、そのリージョンへのレプリケーションが完了した後にのみ使用できます。

      1 つのリージョンで障害が発生しても、完了したレプリカは正常なターゲット リージョンでの VM のデプロイに引き続き使用できます。 ただし、ギャラリー リソースを含むリージョンが使用できない場合は、ギャラリー リソースを作成または更新することはできません。 リージョンの停止中にイメージ バージョンの発行を続行する必要がある場合は、個別のビルド リージョンで個別のギャラリーを維持してください。 詳細については、「Azure コンピューティング ギャラリーのレプリケーションとベスト プラクティス」を参照してください。

    • Azure Blob Storageの VHD: 既定のサービスで管理される VHD の宛先では、geo 冗長性が提供されません。 可用性ゾーンをサポートするリージョンでは、リージョン全体の障害から保護されない ZRS が使用されます。

      ペア リージョンがあるリージョンでは、geo 冗長ストレージ (GRS) または geo ゾーン冗長ストレージ (GZRS) を使用するカスタム ストレージ アカウントに VHD を配布できます。 読み取りアクセス GRS (RA-GRS) と読み取りアクセス GZRS (RA-GZRS) は、セカンダリ エンドポイント経由で読み取り専用アクセスを提供しますが、フェールオーバーは実行しません。 ペアのリージョンで通常の読み取り/書き込みアクセスを復元するには、カスタマー マネージド フェールオーバーを開始するか、セカンダリ エンドポイントから別のストレージ アカウントに VHD をコピーしてください。 geo レプリケーションは非同期であるため、計画外のフェールオーバーでは、レプリケートされなかったデータが失われる可能性があります。 可能な場合は、フェールオーバーの前にストレージ アカウントの [最終同期時刻] プロパティを確認してください。

      Blob Storageフェールオーバーの動作と、ペアになっていないリージョン間でデータをレプリケートするための代替方法の詳細については、Azure Blob Storageの信頼性に関するページを参照してください。

回復性のためのカスタム マルチリージョン ソリューション

リージョンの停止中にイメージをビルドし続ける必要がある場合は、複数のリージョンに独立したビルド環境をデプロイして運用する必要があります。

VM イメージ ビルダーをサポートするリージョンを選択します。 各ビルド リージョンで、マネージド ID とロールの割り当て、ネットワーク構成、カスタマイズ成果物、ソース イメージまたはイメージ レプリカ、配布ターゲットなど、イメージ テンプレートとそのリージョン固有の依存関係を事前にデプロイします。

ギャラリーのリージョンが使用できないときにイメージを公開する必要がある場合は、各ビルド リージョンで独立した Compute Gallery リソースを使用します。 1 つのギャラリーからイメージ バージョンをレプリケートしても、ギャラリーは完全なマルチリージョン リソースにはなりません。

インフラストラクチャをコードとして使用してこれらのリソースを定義し、それらの定義を信頼できる唯一の情報源として扱います。 構成が変更されたときにリージョン環境の同期を維持し、各環境がイメージをビルドして配布できることを定期的にテストします。

バックアップと復元

Azure VM イメージ ビルダーは、バックアップと回復のプロセスに置き換わるものではありません。 ほとんどの場合、復旧で重要になる成果物は、Azure Compute Gallery または VHD ストレージに発行した完成済みイメージです。

破損や長時間の計画外停止からの回復を改善するには、次の推奨事項に従います。

  • 保持要件に従って、公開済みイメージを Azure Compute Gallery またはその他の配布ターゲットに保持します。

  • VHD を作成し、既定の VHD 保存先を使用する場合は、イメージ テンプレートを削除する前に、VHD を独自の永続ストレージにコピーします。

  • ソース管理を使用して、イメージ テンプレート定義を格納およびバージョン管理します。

  • ソース管理または別の種類の永続ストレージを使用して、カスタマイズ スクリプトとパッケージを格納およびバージョン管理します。

  • 事前デプロイされた各復旧環境でイメージをビルドして配布できることを定期的に検証します。

サービス メンテナンスに対する回復性

Microsoftは、Azure VM イメージ ビルダーのメンテナンスを管理します。 VM Image Builder は実行時にアプリケーション トラフィックを処理しないため、メンテナンスは、発行済みのイメージから既に作成した VM には影響しません。 メンテナンス中または別のサービス イベント中にビルドが遅延または中断された場合は、その状態とログを調べて再実行してください。

Azure Service Healthを使用して、ビルド リージョンに影響する可能性がある計画メンテナンスおよびサービス インシデントを監視します。

サービス水準合意書

Azure VM Image Builder は、可用性サービス レベル アグリーメント (SLA) を提供していません。

ディストリビューション ターゲットまたはストレージ サービスに適用される SLA は個別に適用され、VM Image Builder テンプレートまたはビルド操作の可用性コミットメントは提供されません。