Azure Route Server を使用したエニーキャスト ルーティング
1 つの Azure リージョン内の Availability Zones にアプリケーションをデプロイして、より高い可用性を実現することもできますが、より高い回復性を実現したり、世界中のユーザーのパフォーマンスを向上させたり、ビジネス継続性を向上させたりする目的で、必要に応じて複数のリージョンにアプリケーションをデプロイする場合があります。 マルチリージョン アプリケーションがデプロイされている場所の 1 つにユーザーを転送するアプローチはさまざまです。たとえば、Azure Traffic Manager などの DNS ベースのアプローチや、Azure Front Door や Azure のリージョン間ロード バランサーのようなルーティングベースのサービスなどです。
前述の Azure サービスは、パブリック IP アドレス指定を使用してパブリック インターネットを介してユーザーを最適なアプリケーションの場所に転送するために推奨されていますが、プライベートのネットワークおよび IP アドレスはサポートしていません。 この記事では、マルチリージョンでプライベートにネットワーク化されたアプリケーションのデプロイを実現するためのルートベースのアプローチ (IP エニーキャスト) の使用方法について説明します。
IP エニーキャストは、基本的に、複数の場所からまったく同じ IP アドレスをアドバタイズすることで構成されます。これにより、アプリケーション ユーザーからのパケットは、(ルーティングの観点から) 最も近いリージョンにルーティングされます。 エニーキャスト経由でマルチリージョンの到達可能性を提供すると、DNS ベースのアプローチよりも利点があります。たとえば、DNS の回答をキャッシュしていないクライアントに依存する必要がなく、アプリケーションの DNS 設計を変更する必要がない、などです。
トポロジ
このシナリオの設計では、同じ IP アドレスがさまざまな Azure リージョンの仮想ネットワークからアドバタイズされます。この場合、ネットワーク仮想アプライアンス (NVA) は Azure Route Server を介してアプリケーションの IP アドレスをアドバタイズします。 次の図では、2 つの単純なハブとスポークのトポロジを示しており、それぞれが異なる Azure リージョンにあります。 各リージョンの NVA は、同じルート (この例では a.b.c.d/32
) をローカルの Azure Route Server にアドバタイズします (ルート プレフィックスが Azure およびオンプレミス ネットワークと重複しないようにする必要があります)。 ルートは、ExpressRoute を介してオンプレミス ネットワークにさらに伝達されます。 アプリケーション ユーザーがオンプレミスからアプリケーションにアクセスする場合、DNS インフラストラクチャ (このドキュメントでは説明しません) は、アプリケーションの DNS 名をエニーキャスト IP アドレス (a.b.c.d
) に解決します。これにより、オンプレミスのネットワーク デバイスが 2 つのリージョンのいずれかにルーティングされます。
使用可能なリージョンの選択は、すべてルーティング属性に基づいて決定されます。 両方のリージョンからのルートが同一である場合、オンプレミス ネットワークは通常、等コスト マルチパス (ECMP) ルーティングを使用して各アプリケーション フローを各リージョンに送信します。 Azure の各 NVA によって生成されたアドバタイズを変更して、いずれかのリージョンを優先することもできます。 たとえば、BGP AS Path プリペンドを使用して、オンプレミスから Azure ワークロードへの確定的なパスを確立します。
重要
ルートをアドバタイズする NVA には、ブラックホール トラフィックを避けるために、アプリケーションがそれぞれのリージョンで利用できない場合に、ルートのアドバタイズを停止する正常性チェック メカニズムを含める必要があります。
戻りトラフィック
オンプレミス クライアントからのアプリケーション トラフィックが Azure 内のいずれかの NVA に到着すると、NVA は接続リバース プロキシまたは宛先ネットワーク アドレス変換 (DNAT) を実行します。 その後、実際のアプリケーションにパケットが送信されます。これは通常、NVA がデプロイされているハブ仮想ネットワークにピアリングされたスポーク仮想ネットワークに存在します。 NVA が接続をリバースプロキシする場合 (または、宛先 NAT に加えて送信元 NAT を実行する場合) は、アプリケーションからのトラフィックが NVA を通じて戻ります。
それ以外の場合、アプリケーションに到着するトラフィックは、元のオンプレミス クライアントの IP アドレスから引き続き送信されます。 この場合、ユーザー定義ルート (UDR) を使用してパケットを NVA に送り返すことができます。 各リージョンに複数の NVA インスタンスがある場合は、トラフィックが非対称である (受信トラフィックと送信トラフィックが異なる NVA インスタンスを通過する) 可能性があるため、特別な注意が必要です。 一般に、NVA がステートレスである場合、非対称トラフィックは問題ではありませんが、NVA でファイアウォールなどの接続状態を追跡し続ける場合は、エラーになります。