エニーキャスト ルーティングを使用すると、複数の Azure リージョンから同じ IP アドレスをアドバタイズできるため、アプリケーションの可用性、パフォーマンス、回復性が向上します。 Azure Route Server では、ルーティング メトリックに基づいて最も近い、または最適なアプリケーション インスタンスにトラフィックを自動的に転送するエニーキャスト ルーティングを実装できます。
この記事では、プライベート ネットワーク経由のマルチリージョン アプリケーションデプロイ用に Azure Route Server でエニーキャスト ルーティングを実装する方法について説明します。
エニーキャスト ルーティングとは
エニーキャスト ルーティングは、同じ IP アドレスが異なる場所の複数のサーバーまたはアプリケーション インスタンスに割り当てられるネットワーク アドレス指定とルーティング方法です。 クライアントがエニーキャスト IP アドレスに要求を送信すると、ネットワーク インフラストラクチャは、ルーティング プロトコルとメトリックに基づいて、最も近いまたは最適なサーバーにトラフィックを自動的にルーティングします。
エニーキャスト ルーティングの利点
エニーキャスト ルーティングには、複数リージョンのデプロイに関するいくつかの利点があります。
- パフォーマンスの向上: トラフィックは最も近いアプリケーション インスタンスに自動的にルーティングされ、待機時間が短縮されます
- 可用性の強化: 1 つのリージョンが使用できなくなった場合、トラフィックは自動的に他のリージョンにフェールオーバーされます
- 負荷分散: トラフィックはルーティング メトリックに基づいて複数のリージョンに分散できます
- 簡略化されたクライアント構成: クライアントは、実際のサーバーの場所に関係なく、単一の IP アドレスに接続します
- プライベート ネットワークのサポート: DNS ベースのソリューションとは異なり、エニーキャストはプライベート IP アドレスとネットワークで動作します
Anycast と他の複数リージョンのアプローチ
Azure では、Azure Traffic Manager、 Azure Front Door、Azure Cross-Region Load Balancer などの複数リージョンデプロイ用のサービスが用意されていますが、これらのサービスはパブリック インターネット トラフィックとパブリック IP アドレス指定用に設計されています。
Azure Route Server でのエニーキャスト ルーティングは、次の目的で設計されています。
- プライベート ネットワークのシナリオ: プライベート IP アドレス指定を必要とするアプリケーション
- ハイブリッド接続: オンプレミス ネットワークへの ExpressRoute または VPN 接続に関連するシナリオ
- ルーティング ベースのトラフィック管理: DNS キャッシュまたはクライアントの動作が DNS ベースのソリューションに干渉する可能性がある場所
Azure Route Server を使用したエニーキャストの実装
Azure Route Server では、ExpressRoute または VPN 接続を介して、複数の Azure リージョンからオンプレミス ネットワークへの同一ルートのアドバタイズを容易にすることで、エニーキャスト ルーティングが可能になります。
アーキテクチャの概要
エニーキャストの実装では、次のコンポーネントを使用します。
- 複数の Azure リージョン: 各リージョンがアプリケーションのインスタンスをホストします
- Azure Route Server: ルートアドバタイズを管理するために各リージョンにデプロイ
- ネットワーク仮想アプライアンス (NVA): 各リージョンのエニーキャスト IP アドレスをアドバタイズする
- ハブアンドスポーク トポロジ: NVA とアプリケーション インスタンス間の接続を提供します
- ExpressRoute または VPN: Azure リージョンをオンプレミス ネットワークに接続する
実装トポロジ
次の図は、2 つの Azure リージョンでの一般的なエニーキャストの実装を示しています。 各リージョンには次のものが含まれます。
- NVA と Azure Route Server を備えたハブ仮想ネットワーク
- アプリケーション インスタンスをホストするスポーク仮想ネットワーク
- オンプレミス ネットワークへの ExpressRoute 接続
エニーキャスト ルーティングのしくみ
-
ルート アドバタイズ: 各リージョンの NVA は、同じ IP アドレス プレフィックス (
a.b.c.d/32など) をローカルの Azure Route Server にアドバタイズします - ルート伝達: Azure Route Server は、ExpressRoute または VPN 接続を介してこれらのルートをオンプレミス ネットワークに伝達します
- ルートの選択: オンプレミスのルーティング プロトコルは、ルーティング メトリックに基づいてエニーキャスト IP アドレスに到達するための最適なパスを選択します
- トラフィックの分散: クライアント トラフィックは、選択したパスに基づいて最適なリージョンに自動的にルーティングされます
ルートの選択と負荷分散
トラフィックを受信するリージョンの選択は、ルーティング属性によって異なります。
- 等コストマルチパス (ECMP): 複数のリージョンからのルートに同じメトリックがある場合、トラフィックは使用可能なすべてのパスに均等に分散されます
- BGP パスの基本設定: AS パスの長さ、ローカル設定、MED 値などの BGP 属性を調整することで、ルーティングの決定に影響を与えることができます
- AS パスのプリペンド: 特定のルートの AS パスを人工的に長くすることで、優先度を下げ、プライマリ/バックアップ構成を実現します
重要
NVA は、ローカル アプリケーション インスタンスが使用できなくなったときにルートのアドバタイズを停止する正常性チェック メカニズムを実装する必要があります。 これにより、トラフィックが失敗したインスタンス (ブラックホール) にルーティングされるのを防ぐことができます。
リターン トラフィックに関する考慮事項
リターン トラフィックの適切な処理は、エニーキャストの実装を成功させるために不可欠です。 この方法は、NVA が受信トラフィックをどのように処理するかによって異なります。
トラフィック処理方法
リバース プロキシ モード では、NVA がリバース プロキシとして動作するときに、最も予測可能なトラフィック フローが提供されます。 この構成では、NVA はクライアントから元の接続を終了し、アプリケーション インスタンスへの新しい接続を確立します。 NVA が接続の両側を管理するため、リターン トラフィックは同じ NVA を経由して自然にフローバックされます。
NVA が宛先ネットワーク アドレス変換 (DNAT) を実行する場合、ネットワーク アドレス変換 (NAT) モードでは異なる考慮事項が必要です。 NVA は、宛先 IP アドレスをエニーキャスト IP からアプリケーションの実際の IP アドレスに変換します。 NVA がソース NAT (SNAT) も実行する場合、トラフィックは同じ NVA を経由して戻ります。 ただし、SNAT が実行されない場合は、適切なリターン トラフィック ルーティングを確保するために追加の構成が必要です。
返送トラフィックのルーティング
アプリケーションが元のクライアント IP アドレス (SNAT なし) でトラフィックを受信する場合は、リターン トラフィックが正しい NVA を通過していることを確認する必要があります。 アプリケーションのサブネットでユーザー定義ルート (UDR) を構成して、NVA にトラフィックを戻すことができます。 これらの UDR は、オンプレミスの IP アドレス範囲をカバーし、単一の NVA デプロイに適している必要があります。
リージョンごとに複数の NVA インスタンスを使用するデプロイでは、非対称トラフィックに関する考慮事項が重要になります。 ステートレス NVA は、受信フローと送信フローが異なるインスタンスを通過する非対称トラフィックを処理できます。 ただし、ステートフル NVA では、接続状態を維持するために対称トラフィック フローが必要です。 ステートフル NVA のソリューションには、接続アフィニティ メカニズムの使用、NVA インスタンス間のセッション共有の実装、セッション永続化を使用したロード バランサーの構成などがあります。
トラフィック フローのベスト プラクティス
正常性の監視では、アプリケーションと NVA の障害をすばやく検出するための堅牢な正常性チェックを実装する必要があります。 フェールオーバーのタイミングでは、迅速なフェールオーバーと安定性のバランスを取るために適切な BGP タイマーを構成する必要があります。 トラフィック エンジニアリングでは、BGP コミュニティまたはその他の属性を使用して、トラフィック ポリシーを実装できます。 包括的な監視とアラートでは、最適なパフォーマンスと迅速な問題検出を確保するために、リージョン間のルートアドバタイズとトラフィック パターンを追跡する必要があります。
実装の考慮事項
前提条件と要件
Azure Route Server でエニーキャスト ルーティングを実装する前に、エニーキャスト IP アドレスが既存の Azure またはオンプレミス ネットワークと競合しないように、IP アドレスの割り当てを慎重に計画する必要があります。 デプロイを成功させるには、BGP ルーティング ポリシーとそのトラフィック分散への影響をしっかりと理解することが不可欠です。 アプリケーション アーキテクチャは、複数のリージョンからのトラフィックを効果的に処理するように設計されている必要があります。また、信頼性の高い操作を確保するために、アプリケーションとネットワーク仮想アプライアンスの両方に対して包括的な正常性監視を実装する必要があります。
デプロイのベスト プラクティス
エニーキャスト ルーティングをデプロイする場合は、他のリージョンに展開する前に、単純な 2 リージョンデプロイから開始することをお勧めします。 フェールオーバー シナリオの定期的なテストは、システムが可用性要件を満たし、障害時に想定どおりに動作することを確認するのに役立ちます。 さまざまなオンプレミスの場所からの待機時間やスループットなどのパフォーマンス メトリックを監視すると、ルーティング構成の有効性に関する貴重な分析情報が得られます。 BGP ポリシーとその意図された効果に関する明確なドキュメントを維持することは、継続的な管理とトラブルシューティングに不可欠です。
制限事項と考慮事項
Azure Route Server でエニーキャスト ルーティングを実装する場合は、いくつかの要因を考慮する必要があります。 BGP コンバージェンス時間により、フェールオーバー イベント中に遅延が発生し、復旧時間の目標に影響を与える可能性があります。 DNS ベースのソリューションと比較してネットワーク層ルーティングの複雑さが増すには、より多くの専門知識と慎重な計画が必要です。 ネットワーク層ルーティングの問題のトラブルシューティングは、アプリケーション層の問題を診断するよりも困難な場合があり、専門的な知識とツールが必要です。 さらに、複数のリージョン間でネットワーク仮想アプライアンスとルート サーバー インスタンスを増やす必要があるため、インフラストラクチャ コストが増加します。