この記事には、Virtual Machine Scale Sets の可用性ゾーンのサポートに関する情報が含まれています。
注
Virtual Machine Scale Sets は、1 つのリージョンにのみデプロイできます。 複数のリージョンに VM をデプロイする場合は、「 Virtual Machines - 複数リージョンのサポート」を参照してください。
可用性ゾーンのサポート
可用性ゾーン は、各 Azure リージョン内のデータセンターの物理的に分離されたグループです。 1 つのゾーンで障害が発生した場合、サービスを残りのゾーンのいずれかにフェールオーバーできます。
Azure Virtual Machine Scale Sets を使用すると、負荷分散が行われる VM のグループを作成および管理できます。 VM の数は、需要または定義されたスケジュールに応じて自動的に増減できます。 スケール セットを使用すると、アプリケーションの高可用性が実現され、多数の VM の管理、構成、更新を一元的に行うことができます。 スケール セット自体にはコストはかかりません。 料金は、作成した各 VM インスタンスに対してのみ発生します。
Virtual Machine Scale Sets は、リージョン内のゾーン デプロイとゾーン冗長デプロイの両方をサポートしています。
ゾーン デプロイ。 単一のゾーンにスケール セットを作成する場合は、そのセットのすべての VM を実行するゾーンを制御します。 スケール セットはそのゾーン内でのみ管理および自動スケーリングされます。
ゾーン冗長デプロイ。 ゾーン冗長スケール セットを使うと、複数のゾーンにまたがる単一のスケール セットを作成できます。 既定では、VM が作成されると、ゾーン間で均等に分散されます。
前提条件
可用性ゾーンを使用するには、サポートされている Azure リージョンにスケール セットを作成する必要があります。
アプリケーションのスケーリングと可用性を将来にわたって保証するために、単一インスタンス VM も含めすべての VM を、フレキシブル オーケストレーション モードを使用してスケール セットにデプロイする必要があります。
SLA
可用性ゾーンは物理的に分離されており、個別の電源、ネットワーク、冷却装置を備えているため、サービス レベル アグリーメント (SLA) が向上します。 詳細については、Microsoft Online Services の SLA を参照してください。
可用性ゾーンを有効にして Virtual Machine Scale Sets を作成する
可用性ゾーンを使用するスケール セットは、次のいずれかの方法で作成できます。
ゾーン デプロイを使用するスケール セットを作成するプロセスは、作業の開始に関する記事で詳しく説明されているプロセスと同じです。 次の例で示すように、サポートされている Azure リージョンを選択すると、スケール セットを 1 つ以上の使用可能なゾーンに作成できます。
スケール セットと、それをサポートするリソース (Azure Load Balancer やパブリック IP アドレスなど) は、指定した 1 つのゾーンに作成されます。
ゾーン フェールオーバーのサポート
ゾーンのない Azure リージョンの場合、既定では障害ドメイン数を 5 に設定して Virtual Machine Scale Sets が作成されます。 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 つより多い、または少ない障害ドメイン間で行われる可能性があります。
注
最大分散では、VM が分散される障害ドメインの数に関係なく、スケール セット VM インスタンス ビューとインスタンス メタデータのどちらにも 1 つの障害ドメインしか表示されません。 各ゾーン内の分散は暗黙で行われます。
静的固定分散 (platformFaultDomainCount = 5)。 静的固定分散を使用すると、スケール セットによって、ゾーンあたり厳密に 5 個の障害ドメインに VM が分散されます。 スケール セットが割り当て要求を満たすためにゾーンあたり 5 個の個別の障害ドメインを見つけることができない場合、要求は失敗します。
マネージド ディスクの障害ドメインの数に合わせた分散 (platformFaultDomainCount = 2 または 3)。スケール セットの障害ドメインの数をマネージド ディスクの障害ドメインの数に合わせることを検討できます。 数を一致させると、マネージド ディスクの障害ドメイン全体がダウンした場合にクォーラムの損失を防ぐのに役立ちます。 障害ドメインの数を、各リージョンで使用可能なマネージド ディスクの障害ドメインの数以下に設定することができます。 詳細については、 Azure 仮想マシンとマネージド ディスクで高可用性を実現するためのベスト プラクティスを参照してください。
ゾーン バランシング
複数のゾーン間にデプロイされるスケール セット (ゾーン冗長) の場合、"ベスト エフォートのゾーンバランス" または "厳密なゾーンバランス" のどちらかを選択できます。 各ゾーンにスケール セット内の他のすべてのゾーンと同じ数 (プラスマイナス 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 Machines と Virtual Machine Scale Sets を可用性ゾーンのサポートに移行する」を参照してください。
その他のガイダンス
配置グループ
重要
配置グループは、均一オーケストレーション モードで実行されている 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 でのスケール セットの既定値は、単一ゾーンとクロスゾーンのスケール セットについては複数の配置グループですが、リージョン スケール セットについては単一の配置グループです。