ロード バランサーと可用性ゾーン
Azure Load Balancer は、可用性ゾーンのシナリオをサポートしています。 Standard Load Balancer を使用することで、リソースをゾーンに一致させて、複数のゾーンに分散させることにより、シナリオ全体の可用性を向上させることができます。 このドキュメントを読んで、これらの概念と基本的なシナリオの設計ガイダンスを理解してください
ロード バランサーには、ゾーン冗長、ゾーン、 または非ゾーンを指定できます。 ロード バランサーのゾーン関連プロパティを構成するには、必要なフロントエンドの適切な種類を選択します。
ゾーン冗長
Availability Zones があるリージョンでは、Standard Load Balancer は、単一の IP アドレスによって処理されるトラフィックでゾーン冗長にすることができます。 単一のフロントエンド IP アドレスは、ゾーンの障害が発生した後も存続します。 フロントエンド IP は、ゾーンに関係なく、すべての (影響を受けない) バックエンド プール メンバーに到達するために使用できます。 1 つまたは複数の可用性ゾーンで障害が発生しても対応可能であり、リージョン内に正常なゾーンが 1 つでも残っていれば、データ パスは存続します。
フロントエンドの IP アドレスは、複数の可用性ゾーンで複数の独立したインフラストラクチャ展開によって同時に処理されます。 再試行または再確立は、ゾーンの障害による影響を受けない他のゾーンで成功します。
図:ゾーン冗長ロード バランサー
ゾーン ベース
単一ゾーンを保証されたフロントエンドにすることができます。これは、"ゾーン ベース" と呼ばれます。 このシナリオでは、リージョン内の 1 つのゾーンがすべての受信フローまたは送信フローを処理します。 フロントエンドは、ゾーンの正常性に左右されます。 データ パスは、それが保証されたゾーン以外のゾーンのエラーによっては影響を受けません。 ゾーン ベースのフロントエンドを使って、可用性ゾーンごとに IP アドレスを公開することができます。
さらに、各ゾーン内の負荷分散されたエンドポイントに対して、ゾーン フロントエンドを直接使用することもできます。 この構成を使ってゾーンごとに負荷分散されたエンドポイントを公開し、各ゾーンを個別に監視することができます。 パブリック エンドポイントの場合は、これらを Traffic Manager などの DNS 負荷分散製品と統合して、1 つの DNS 名を使用できます。
図:ゾーン ロード バランサー
パブリック ロード バランサー フロントエンドの場合は、パブリック IP に zones パラメーターを追加します。 このパブリック IP は、それぞれの規則で使用されるフロントエンド IP 構成によって参照されます。
内部ロード バランサー フロントエンドの場合は、内部ロード バランサーのフロントエンド IP 構成に zones パラメーターを追加します。 ゾーン フロントエンドは、サブネット内の IP アドレスを特定のゾーンに対して保証します。
非ゾーン
ロード バランサーは、"ゾーンなし" フロントエンドを使用して、非ゾーン構成で作成することもできます。 これらのシナリオでは、パブリック ロード バランサーはパブリック IP またはパブリック IP プレフィックスを使い、内部ロード バランサーはプライベート IP を使います。 このオプションによって、冗長性は保証されません。
Note
Basic SKU から Standard SKU にアップグレードされるすべてのパブリック IP アドレスは、"ゾーンなし" の種類になります。 Azure portal でパブリック IP アドレスをアップグレードする方法について説明します。
設計上の考慮事項
Standard Load Balancer のゾーン関連プロパティについて理解したうえで、次の設計上の考慮事項について理解すると、高可用性を実現するための設計に役立ちます。
ゾーン障害の許容範囲
- ゾーン冗長のフロントエンドは、1 つの IP アドレスを持つ任意のゾーン内のゾーン リソースに対してサービスを提供できます。 IP は、リージョン内に正常なゾーンが少なくとも 1 つ残っている限り、1 つまたは複数のゾーンで障害があっても存続できます。
- ゾーン フロントエンドは、単一のゾーンへのサービスの縮小であり、対応するゾーンの正常性に依存します。 ゾーン内のデプロイがダウンした場合、このエラー後にロード バランサーは存続できません。
ロード バランサーのバックエンド プール内のメンバーは、通常、ゾーン仮想マシンなどの単一のゾーンに関連付けられます。 運用ワークロードの一般的な設計では、複数のゾーン リソースをもつようにします。 たとえば、ロード バランサーのバックエンドのゾーン 1、2、3 から仮想マシンを配置して、ゾーン冗長フロントエンドを設けると、この設計原則が満たされます。
複数のフロントエンド
複数のフロントエンドを使用すると、複数のポートまたは IP アドレスでトラフィックを負荷分散できます。 アーキテクチャを設計するときは、ゾーン冗長が複数のフロントエンドとどのように相互に作用するかを考慮してください。 常にすべてのフロントエンドが障害に対する回復性を備えることを目標とする場合は、フロントエンドとして割り当てられるすべての IP アドレスがゾーン冗長でなければなりません。 フロントエンドのセットが 1 つのゾーンに関連付けられることが目的である場合は、そのセットのすべての IP アドレスをその特定のゾーンに関連付ける必要があります。 ロード バランサーを各ゾーンに設ける必要はありません。 代わりに、各ゾーン フロントエンド、またはゾーン フロントエンドのセットを、その特定の可用性ゾーンの一部であるバックエンド プール内の仮想マシンに関連付けることができます。
リージョンのゾーン モデル間での移行
可用性ゾーンを使用するようにリージョンが拡張されている場合、既存の IP は、ロード バランサー フロントエンドに使用される IP のように、非ゾーンのままです。 アーキテクチャで新しいゾーンを利用できるようにするには、新しいフロントエンド IP を作成することをお勧めします。 作成後は、ここに説明のあるメソッドを使用し、新しいゾーン冗長フロントエンドで既存の非ゾーン フロントエンドを置換できます。 既存の負荷分散と NAT 規則はすべて、新しいフロントエンドに移されます。
コントロール プレーンとデータプレーンについての注意点
ゾーンの冗長性は、データ プレーンやコントロール プレーンがヒットレスであることを意味するものではありません。 ゾーン冗長なフローは任意のゾーンを使うことができ、ユーザーのフローはリージョン内で正常なすべてのゾーンを使います。 ゾーンで障害が発生した場合、正常なゾーンを使用しているトラフィック フローは影響を受けません。
ゾーンで障害が発生したときにゾーンを使用しているトラフィック フローは影響を受ける可能性がありますが、アプリケーションは復旧できます。 Azure がゾーンの障害に対して収束した場合、トラフィックは、再送信時にリージョン内の正常なゾーンで継続されます。
障害シナリオに対するアプリケーションの回復性を向上させるには、Azure クラウド設計パターンに関する記事を参照してください。
制限事項
- 作成済みのリソースに対して、ゾーンを変更、更新、作成することはできません。
- 作成済みのリソースをゾーン ベースからゾーン冗長に、またはその逆に更新することはできません。
次のステップ
- 可用性ゾーンの詳細を確認する
- Standard Load Balancer の詳細を確認する
- ゾーン ベースの Standard Load Balancer を使用して、単一のゾーン内での VM の負荷分散を確認する
- ゾーン フロントエンドの Standard Load Balancer を使用したゾーン間での VM の負荷分散を確認する
- 障害シナリオに対するアプリケーションの回復性を向上させるために、Azure クラウド設計パターンについての記事を確認する。