AWS Global Accelerator によるグローバルネットワーク最適化 - 低レイテンシ配信とフェイルオーバー

Anycast IP で AWS グローバルネットワークにトラフィックを誘導し、エンドポイントグループの設計とヘルスチェックによるフェイルオーバーを実現する手法を紹介します。

Global Accelerator の仕組みと CloudFront との違い

Global Accelerator はユーザーのトラフィックを AWS のグローバルネットワーク経由でバックエンドに転送するサービスです。2 つの固定 Anycast IP アドレスが割り当てられ、世界中のユーザーは最寄りの AWS エッジロケーションに接続します。そこから先は公衆インターネットではなく AWS のプライベートネットワークを経由するため、レイテンシの安定性とパケットロスの低減が期待できます。CloudFront がコンテンツのキャッシュと HTTP/HTTPS の配信に特化しているのに対し、Global Accelerator は TCP/UDP レベルのトラフィック最適化を提供します。静的コンテンツや API レスポンスのキャッシュが有効な場合は CloudFront、ゲームサーバーや VoIP のようなリアルタイム通信には Global Accelerator が適しています。

エンドポイントグループとトラフィック制御

エンドポイントグループはリージョン単位で定義し、ALB、NLB、EC2 インスタンス、Elastic IP をエンドポイントとして登録します。各エンドポイントグループにはトラフィックダイヤル (0-100%) を設定でき、リージョン間のトラフィック配分を制御します。例えば、東京リージョンに 70%、シンガポールリージョンに 30% のトラフィックを配分する設定が可能です。リージョン移行時にはトラフィックダイヤルを段階的に変更し、新リージョンへのトラフィックを徐々に増やすことで安全に移行できます。エンドポイントの重み付け (0-255) で、同一リージョン内の複数エンドポイント間のトラフィック配分も制御できます。

ヘルスチェックとフェイルオーバー

Global Accelerator はエンドポイントのヘルスチェックを継続的に実行し、障害を検知すると数秒以内にトラフィックを正常なエンドポイントにルーティングします。 Route 53 のフェイルオーバーが DNS TTL に依存するため切り替えに数十秒から数分かかるのに対し、 Global Accelerator は Anycast ルーティングの変更で即座に切り替わります。マルチリージョン構成では、プライマリリージョンの全エンドポイントが異常になった場合、自動的にセカンダリリージョンのエンドポイントにフェイルオーバーします。固定 IP アドレスはフェイルオーバー後も変わらないため、 DNS の変更やクライアントの再接続が不要です。 Global Accelerator のネットワーク設計を深く理解するには、専門書籍 (Amazon)が役立ちます。

Global Accelerator の料金

Global Accelerator の料金は固定料金とデータ転送量で構成されます。アクセラレーター 1 つあたり約 0.025 ドル/時 (月額約 18 ドル) の固定料金に加え、データ転送は送信元と送信先のリージョンに応じた従量課金 (1 GB あたり約 0.015〜0.035 ドル) です。CloudFront (月額固定費なし、データ転送のみ) と比較すると、Global Accelerator は固定費がある分、少量のトラフィックでは割高です。TCP/UDP のリアルタイム通信やゲームサーバーなど、CloudFront が対応しないプロトコルのワークロードで Global Accelerator を選択します。

適したユースケース

Global Accelerator が特に効果を発揮するのは、Web ページのキャッシュ配信ではない用途です。ゲームのリアルタイム通信、音声・映像の通話、独自プロトコルを使う通信など、HTTP 以外のトラフィックを世界中の利用者へ低遅延で届けたい場合に向きます。利用者からの通信を、近くのエッジから AWS の高速なバックボーンへ載せることで、インターネットを経由するよりも安定した低遅延を実現します。固定の入口 IP が必要なシステムにも適します。動的な通信や、TCP・UDP レベルでの最適化が必要なワークロードで、その価値が際立ちます。

トラフィックの段階的な制御

Global Accelerator は、エンドポイントへ流すトラフィックの割合を細かく制御できます。リージョンのエンドポイントグループごとに流量を調整するダイヤルや、グループ内の各エンドポイントへの重み付けを使い、トラフィックの配分を変えられます。これを活用すると、新しいバージョンへ少しずつトラフィックを移すブルーグリーン的な切り替えや、特定リージョンの負荷を意図的に抑える運用が可能です。問題が起きたら割合をゼロに近づけて切り離すこともできます。トラフィックの流れを動的に制御できることが、安全なリリースや負荷分散に役立ちます。

静的 IP とクライアント IP の保持

Global Accelerator は、変わらない固定の入口 IP を提供します。背後の構成を変えても入口の IP は維持されるため、ファイアウォールの許可リストに登録する宛先として安定して使えます。複数の入口 IP が用意されるため、冗長性も確保されます。また、背後のアプリケーションに、通信してきた利用者本来の IP アドレスを引き継ぐ設定も可能で、アクセス元に基づいた制御やログ記録を行えます。固定 IP と、利用者 IP の保持を両立できる点は、IP ベースの制御を必要とするシステムにとって重要な利点になります。

CloudFront との使い分け

Global Accelerator と CloudFront は、どちらも AWS のグローバルネットワークを活用しますが、目的が異なります。CloudFront は、画像やページなどキャッシュ可能なコンテンツをエッジに保持して配信するのに最適です。一方 Global Accelerator は、キャッシュせずに、動的な通信や HTTP 以外のプロトコルを高速かつ安定して中継することに向きます。静的コンテンツの配信なら CloudFront、リアルタイム性の高い動的通信や独自プロトコルなら Global Accelerator、という整理ができます。両者を組み合わせ、コンテンツの性質ごとに使い分けることで、全体の配信性能を最適化できます。

まとめ

Global Accelerator は AWS グローバルネットワークを活用してトラフィックのレイテンシと可用性を改善するサービスです。固定 Anycast IP による安定したエントリポイント、数秒のフェイルオーバー、トラフィックダイヤルによる柔軟な制御が特徴です。HTTP 以外のプロトコルを使用するグローバルアプリケーションに特に有効です。