地理的に分散したネットワーク アーキテクチャを設計する
分散アプリでは、コンポーネント間の通信が確実に行われ、障害発生時に要求が別のコンポーネントまたはリージョンにルーティングされるようにすることが不可欠です。
この事例では、Azure の配送ポータルを再設計し、リージョン規模の障害に対する脆弱性を軽減することにしました。 プライマリ リージョンが使用できないときは、アプリケーションがセカンダリ リージョンのコンポーネントにフェールオーバーされるようにする必要があります。 フェールオーバーによるユーザーへのサービス提供の中断が、最小限に抑えられるようにする必要があります。
ここでは、Azure DNS、Traffic Manager、Front Door、Azure CDN により、配送会社のアプリ アーキテクチャをサポートする方法について学習します。
Azure DNS
Azure DNS の実装を変更する必要はないことを思い出してください。 ここでは、Azure DNS を使って、アプリを識別するドメイン名レコードをホストしています。
Azure DNS では、Azure インフラストラクチャによって名前解決が完全に提供されます。 このサービスは本質的にマルチリージョンであるため、新しいアーキテクチャ設計の機能をサポートするために、既存の Azure DNS の構成を変更する必要はありません。
また、Azure DNS では 100% の SLA が保証されており、DNS 要求が有効であれば、常に少なくとも 1 つの Azure DNS ネーム サーバーから応答を受け取ります。
トラフィック ルーターを選択する
分散 Web アプリケーションでは、複数のリージョン間にトラフィックを負荷分散してリダイレクトできるサービスが必要です。
Azure には、フロントエンド コンポーネント間にトラフィックをルーティングできる複数の異なるサービスが用意されています。 Azure Application Gateway は 1 つのリージョンにバインドされているので、置き換える必要があることを思い出してください。 そのリージョンで障害が発生した場合、ルーティングを行うことができなくなります。
Azure には、複数のリージョン間でグローバルにルーティングを行うことができ、1 つのリージョンの停止に対して脆弱ではないトラフィック ルーターが 2 つあります。
- Azure Traffic Manager
- Azure Front Door
アプリケーションに適したルーターを選択できるように、これらのサービスを詳しく調べてみましょう。
Azure Traffic Manager とは
Azure Traffic Manager は、DNS レコードを使用して、複数の Azure リージョン内の宛先にトラフィックをルーティングするグローバル ロード バランサーです。
すべての要求をプライマリ リージョンにルーティングし、そのリージョン内の App Service の応答性を監視するように、Traffic Manager を構成できます。 プライマリ リージョンの App Service で障害が起きた場合、Traffic Manager では、セカンダリ リージョンの App Service にユーザーの要求が自動的に再ルーティングされます。 この再ルーティングにより、継続的なサービスを保証するフェールオーバーが実行されます。 この方法は、優先順位によるルーティング モードと呼ばれています。
Traffic Manager では、DNS システムを使用してトラフィックがルーティングされるため、HTTP トラフィックだけでなく、任意のプロトコルがルーティングされます。 ただし、Traffic Manager では、クライアントの国番号やユーザー エージェント ヘッダーなどの HTTP プロパティに基づいて、トラフィックをルーティングまたはフィルター処理することはできません。 また、トランスポート層セキュリティ (TLS) プロトコルの終端処理を行うこともできません。この処理では、ルーターによって要求の暗号化解除と応答の暗号化が行われ、App Service 仮想サーバーの負荷が軽減されます。 これらの機能のいずれかが必要な場合は、Azure Front Door を使用する必要があります。
Traffic Manager では、高度な構成が可能なエンドポイント監視が使用されます。 たとえば、プロトコル、ポート、パス、カスタム ヘッダー設定、予想される状態コードの範囲、許容されるエラー数を定義できます。 エンドポイント監視を使うと、アプリケーションのすべての部分の全体的な正常性を継続的に把握できます。
Azure Front Door とは
Traffic Manager と同様に、Azure Front Door はグローバルなロード バランサーです。 Traffic Manager とは異なり、ネットワーク アプリケーション レイヤー (レイヤー 7) で動作し、HTTP と HTTPS のプロパティを使ってフィルター処理とルーティングが行われます。
Front Door を使うと、Traffic Manager ではサポートされていないさまざまな種類のルーティングを行うことができます。 たとえば、ブラウザーの国番号に基づいて、トラフィックをルーティングすることができます。 Front Door では、TLS プロトコルの終端処理もサポートされています。
ただし、例外があります。 HTTP と HTTPS 以外のプロトコルのトラフィックをルーティングする場合は、Traffic Manager を使用する必要があります。
Front Door を使うと、追跡ポータルを構成するさまざまなバックエンドに優先順位を割り当てることができます。 これらの優先順位により、Front Door で必要に応じて要求をルーティングできます。 プライマリ リージョンのサービスには高い優先順位を割り当て、セカンダリ リージョンのサービスには低い優先順位を割り当てます。
Front Door では、サービスの正常性状態を監視する正常性プローブを実装し、エラーが発生した場合に、トラフィックを正しくルーティングできます。 Front Door での優先順位によるルーティング モードとエンドポイント監視は、Traffic Manager の機能と似ていますが、正常性プローブが常に HTTP に対して動作する点が異なります。
配送ポータルの Web UI とその API に対するすべてのトラフィックは、HTTPS 経由で行われるので、Azure Traffic Manager を Front Door に切り替えることができます。 また、Front Door を、優先バックエンドの割り当てを使って構成できます。
Azure CDN
この単一リージョン アーキテクチャでは、Azure CDN を使用して Azure Blob Storage からの静的コンテンツをキャッシュしています。 Azure CDN サービスは、ユーザーの近くで静的コンテンツをキャッシュするサーバーのグローバル ネットワークです。 マルチリージョン アーキテクチャ用に、このサービスを変更する必要はありません。 ただし、次のユニットで取り上げる Azure ストレージ アカウントに関する考慮事項があります。