Virtual Machine Scale Sets の信頼性
この記事には、Virtual Machine Scale Sets の可用性ゾーンのサポートに関する情報が含まれています。
Note
Virtual Machine Scale Sets は、1 つのリージョンにのみデプロイできます。 複数のリージョンに VM をデプロイする場合は、仮想マシンのディザスター リカバリー: リージョン間フェールオーバーを参照してください。
可用性ゾーンのサポート
Azure 可用性ゾーンとは、各 Azure リージョン内にある、3 つ以上に物理的に分離されたデータセンターのグループです。 各ゾーン内のデータセンターには、独立した電源、冷却手段、ネットワーク インフラストラクチャが備わっています。 ローカル ゾーンの障害が発生した場合、可用性ゾーンは、1 つのゾーンが影響を受けたときに、リージョンのサービス、容量、高可用性が残りの 2 つのゾーンによってサポートされるように設計されています。
障害の範囲は、ソフトウェアやハードウェアの障害から、地震、水害、火災などの事象に至る可能性があります。 Azure サービスの冗長と論理的な分離により、障害に対するトレランスが実現されます。 Azure の可用性ゾーンの詳細については、リージョンと可用性ゾーンに関する記事を参照してください。
Azure の可用性ゾーン対応サービスは、適切なレベルの信頼性と柔軟性を提供するように設計されています。 それらは 2 つの方法で構成できます。 それらは、ゾーン間の自動レプリケーションによるゾーン冗長、またはインスタンスを特定のゾーンにピン留めするゾーンベースのいずれかになります。 これらのアプローチを組み合わせることもできます。 ゾーン ベースとゾーン冗長のアーキテクチャの比較の詳細については、「可用性ゾーンとリージョンの使用に関する推奨事項」を参照してください。
Azure Virtual Machine Scale Sets では、負荷分散が行われる VM のグループを作成および管理できます。 需要または定義されたスケジュールに応じて、VM の数を自動的に増減させることができます。 スケール セットは、アプリケーションの高可用性を実現します。また、多数の VM の一元的な管理、構成、更新を可能にします。 スケール セット自体にコストはかかりません。 料金は、作成した各 VM インスタンスに対してのみ発生します。
Virtual Machine Scale Sets は、リージョン内のゾーン デプロイとゾーン冗長デプロイの両方をサポートしています。
ゾーン デプロイ。 単一のゾーンにスケール セットを作成する場合は、そのセットのすべての VM が実行されるゾーンをユーザーが制御します。 スケール セットはそのゾーン内でのみ管理および自動スケーリングされます。
ゾーン冗長デプロイ。 ゾーン冗長スケール セットを使うと、複数のゾーンにまたがる単一のスケール セットを作成できます。 既定では、VM が作成されると、ゾーン間で均等に VM がバランスされます。
前提条件
可用性ゾーンを使用するには、サポートされている Azure リージョンにスケール セットを作成する必要があります。
アプリケーションのスケーリングと可用性を将来にわたって保証するために、たとえ単一インスタンス VM であっても、すべての VM をフレキシブル オーケストレーション モードを使用してスケール セットにデプロイする必要があります。
SLA
可用性ゾーンは物理的に分離されており、個別の電源、ネットワーク、冷却装置を備えているため、SLA (サービス レベル アグリーメント) が向上します。 詳細については、Microsoft Online Services の SLA を参照してください。
可用性ゾーンを有効にして Virtual Machine Scale Sets を作成する
次のいずれかの方法で、可用性ゾーンを使うスケール セットを作成できます。
ゾーン デプロイを使用するスケール セットを作成するプロセスは、使用の開始に関する記事で詳しく説明されているものと同じです。 次の例で示すように、サポートされている Azure リージョンを選ぶときに、使用可能なゾーンの 1 つ以上にスケール セットを作成できます。
スケール セットと、Azure ロード バランサーやパブリック IP アドレスなどのそれをサポートするリソースは、指定した 1 つのゾーンに作成されます。
ゾーン フェールオーバーのサポート
ゾーンのない Azure リージョンで仮想マシン スケール セットに対して既定で作成される障害ドメインの数は 5 個です。 Virtual Machine Scale Sets の可用性ゾーン デプロイがサポートされるリージョンで、このオプションが選択されている場合、障害ドメインの数の既定値はゾーンごとに 1 個です。 この場合の FD = 1 とは、スケール セットに属する VM インスタンスがベスト エフォート ベースで多くのラックに拡散されていることを意味します。 詳細については、「Virtual Machine Scale Sets に対する障害ドメインの適切な数を選択する」を参照してください。
低待機時間デザイン
ゾーン冗長を使用して Virtual Machine Scale Sets を構成することをお勧めします。 ただし、低待機時間がアプリケーションの厳密な要件である場合は、ゾーン スケール セット VM を実装しなければならない場合があります。 ゾーン スケール セットのデプロイでは、複数のゾーンにわたって複数のスケール セット VM を作成することをお勧めします。 たとえば、ゾーン 1 に固定された 1 つのスケール セット インスタンスと、ゾーン 2 または 3 に固定された 1 つのインスタンスを作成できます。 また、ロード バランサーまたはその他のアプリケーション ロジックを使用して、ゾーンの停止中にトラフィックを適切なスケール セットに転送する必要があります。
重要
ゾーン対応のデプロイをオプトアウトすると、基になる障害の分離からの保護を放棄することになります。 可用性ゾーン構成からオプトアウトすると、ゾーンの配置と分離に従わないリソース (これらのリソースの基になる依存関係を含む) への依存が強制されます。 これらのリソースが、ゾーンダウン シナリオで存続することは期待できません。 このようなリソースを活用するソリューションでは、ディザスター リカバリー戦略を定義し、別のリージョンでソリューションの復旧を構成する必要があります。
安全なデプロイ手法
VM をデプロイする場所をより細かく制御するには、リージョン スケール セット VM ではなく、ゾーン スケール セット VM をデプロイする必要があります。 ただし、ゾーン VM はゾーン分離のみを提供し、ゾーン冗長は提供しません。 ゾーン VM で完全なゾーン冗長性を実現するには、異なるゾーンにまたがって 2 つ以上の VM が存在する必要があります。
ゾーン冗長 VM には、最大拡散デプロイ オプションを使用することもお勧めします。 詳細については、拡散オプションを参照してください。
拡散オプション
スケール セットを 1 つ以上の可用性ゾーンにデプロイする場合は、次の拡散オプションがあります (API バージョン 2017-12-01 以降)。
最大拡散 (platformFaultDomainCount = 1)。 ほとんどの場合、最適な拡散が提供されるため、最大拡散が推奨されるデプロイ オプションです。 レプリカを個別のハードウェア分離ユニットに分散する場合は、複数の可用性ゾーンに分散し、各ゾーン内で最大拡散を利用することを勧めします。
最大拡散を選ぶと、スケール セットは各ゾーン内の可能な限り多くの障害ドメインに VM を拡散します。 この拡散では、ゾーンごとの障害ドメインが 5 個より多く、または少なくなる可能性があります。
Note
最大拡散では、VM が拡散される障害ドメインの数に関係なく、スケール セット VM インスタンス ビューとインスタンス メタデータの両方に既定のドメインが 1 つしか表示されません。 各ゾーン内の拡散は暗黙で行われます。
静的固定拡散 (platformFaultDomainCount = 5)。 静的固定拡散を使用すると、スケール セットはゾーンあたり 5 個の障害ドメインに VM を拡散します。 スケール セットが割り当て要求を満たすためにゾーンごとに 5 個の個別の障害ドメインを見つけられない場合、要求は失敗します。
マネージド ディスクの障害ドメインの数に合わせた拡散 (platformFaultDomainCount = 2 または 3)。スケール セットの障害ドメインの数をマネージド ディスクの障害ドメインの数に合わせることを検討できます。 数を一致させると、マネージド ディスクの障害ドメイン全体がダウンした場合に必要最小数が失われることを防止できます。 障害ドメインの数を、各リージョンで使用可能なマネージド ディスクの障害ドメインの数以下に設定することができます。 リージョンごとのマネージド ディスクの障害ドメインの数については、[ここにドキュメントを挿入](リンクはここ) を参照してください。
ゾーン バランス
複数のゾーンにまたがってデプロイされるスケール セット (ゾーン冗長) の場合は、ベスト エフォートのゾーンバランスまたは厳密なゾーンバランスのどちらかを選択できます。 各ゾーンにスケール セット内の他のすべてのゾーンと同じ数 (プラスマイナス 1 個) の VM があれば、スケール セットは「バランスが取れている」と見なされます。 次に例を示します。
スケール セット | ゾーン 1 の VM | ゾーン 2 の VM | ゾーン 3 の VM | ゾーン バランス |
---|---|---|---|---|
バランスの取れたスケール セット | 2 | 3 | 3 | このスケール セットはバランスが取れていると見なされます。 VM の数が異なるゾーンは 1 つだけで、その数も他のゾーンより 1 個少ないだけです。 |
バランスが取れていないスケール セット | 1 | 3 | 3 | このスケール セットはバランスが取れていないと見なされます。 ゾーン 1 の VM 数は、ゾーン 2 および 3 と比べて 2 個少ないです。 |
スケール セットでの VM の作成は成功するかもしれませんが、それらの VM での拡張機能はデプロイに失敗します。 スケール セットのバランスが取れているかどうかの判断では、拡張機能が失敗した VM もカウントされます。 たとえば、ゾーン 1 に 3 個の VM、ゾーン 2 に 3 個の VM、ゾーン 3 に 3 個の VM があるスケール セットは、ゾーン 1 のすべての拡張機能が失敗し、ゾーン 2 と 3 のすべての拡張機能が成功しても、バランスが取れていると見なされます。
ベスト エフォートのゾーン バランスでは、スケール セットはバランスを維持しながらスケールインとスケールアウトを試みます。 ただし、何らかの理由でバランスを取れない場合 (たとえば、1 つのゾーンがダウンして、スケール セットがそのゾーンに新しい VM を作成できない場合)、スケール セットは、スケールインまたはスケールアウトを正常に実行するために一時的な不均衡を許可します。それ以降のスケールアウトの試行で、スケール セットは、スケール セットのバランスを取るために VM を増やす必要があるゾーンに VM を追加します。 同様に、後続のスケールインの試行では、スケール セットは、スケール セットのバランスを取るために VM を少なくする必要があるゾーンから VM を削除します。 "厳密なゾーン バランス" では、実行することによってバランスが崩れるスケールインまたはスケールアウトの試行はすべて失敗します。
ベストエフォートのゾーン バランスを使うには、zoneBalance
を false に設定します。 zoneBalance
の設定は API バージョン 2017-12-01 の既定値です。 厳密なゾーン バランスを使うには、zoneBalance
を true に設定します。
可用性ゾーン サポートに移行する
リージョン スケール セットを可用性ゾーン サポートに再デプロイする方法については、仮想マシンと Virtual Machine Scale Sets を可用性ゾーン サポートに移行するを参照してください。
その他のガイダンス
配置グループ
重要
配置グループは、均一オーケストレーション モードで実行されている仮想マシン スケール セットにのみ適用されます。
Virtual Machine Scale Sets をデプロイする場合は、可用性ゾーンごとに 1 つまたは複数の配置グループを使用してデプロイすることができます。 リージョン スケール セットでの選択肢は、リージョンに 1 つの配置グループ、またはリージョンに複数の配置グループです。 スケール セット プロパティ singlePlacementGroup
が false に設定されている場合、スケール セットは複数の配置グループで構成することができ、0 ~ 1,000 個の VM を持つことができます。 既定値の true に設定されている場合、スケール セットは 1 つの配置グループで構成され、0 から 100 個の VM を持つことができます。 ほとんどのワークロードでは、より大きいスケールに対応できるので、複数の配置グループをお勧めします。 API バージョン 2017-12-01 でのスケール セットの既定値は、単一ゾーンとクロスゾーンのスケール セットについては複数の配置グループですが、リージョン スケール セットについては単一の配置グループです。