AWS Global Accelerator の働き
AWS Global Accelerator によって提供される静的 IP アドレスは、クライアントの単一の固定エントリポイントとして機能します。アクセラレーターを Global Accelerator で設定すると、静的 IP アドレスが 1 つ以上の AWS リージョン のリージョンエンドポイントに関連付けられます。標準アクセラレーターの場合、エンドポイントは Network Load Balancer、Application Load Balancer、Amazon EC2 インスタンス、または Elastic IP アドレスです。カスタムルーティングアクセラレーターの場合、エンドポイントは、1 つ以上の EC2 インスタンスを持つ Amazon VPC (VPC) サブネットです。静的 IP アドレスは、ユーザーに最も近いエッジロケーションから AWS グローバルネットワークへの受信トラフィックを受け入れます。
注記
Global Accelerator で使用する独自の IP アドレス範囲を AWS (BYOIP) にする場合は、代わりに、アクセラレーターで使用する静的 IP アドレスを独自のプールから割り当てることができます。詳細については、「Global Accelerator の Bring your own IP (BYOIP)」を参照してください。
エッジロケーションから、アプリケーションのトラフィックは、設定したアクセラレーターのタイプに基づいてルーティングされます。
標準アクセラレーターの場合、トラフィックは、ユーザーの場所、AWS エンドポイントのヘルス、設定したエンドポイントの重みなど、いくつかの要因に基づいて最適なエンドポイントにルーティングされます。
カスタムルーティングアクセラレーターの場合、各クライアントは、指定した外部静的 IP アドレスとリスナーポートに基づいて、VPC サブネット内の特定の Amazon EC2 インスタンスとポートにルーティングされます。
Global Accelerator を使用する場合は、次の点に注意してください。
-
エンドポイントの重みを上書きする: 特定の限られたシナリオでは、Global Accelerator は設定したエンドポイントの重みを上書きし、可用性を確保します。Global Accelerator がエンドポイントグループ内のエンドポイント間でトラフィックをロードバランシングする場合、特定の状況では、クライアントトラフィックの可用性を維持するか、エンドポイントの重みに従うかを選択する必要があります。例えば、クライアントの IP アドレスが保存されているアクセラレーターでは、接続の衝突を避けるために Global Accelerator がエンドポイントの重み設定を上書きする必要があります。
セキュリティグループとルール: アクセラレーターを追加すると、すでに設定したセキュリティグループと AWS WAF ルールは、アクセラレーターを追加する前と同じように動作し続けます。
IP フラグメント化: インターネットやその他の大規模なネットワーク経由で送信されるときに、標準のイーサネットフレーム (1500 バイト以上) に収まるほど大きすぎる IP パケットは、中間ルーターによってフラグメント化され、個別に送信されます。クライアントとエンドポイントは、より小さな最大セグメントサイズ (MSS) を自動的にネゴシエートするため、TCP プロトコルには IP フラグメント化は必要ありません。ただし、UDP プロトコルには IP フラグメント化が必要です。パケットがフラグメント化されると、Global Accelerator は UDP フラグメントを設定されたエンドポイントに転送し、元の IP パケットを再アセンブルします。Global Accelerator は、AWS ネットワークでサポートされていないため、TCP フラグメントをエッジにドロップします。
AWS Global Accelerator の仕組みの概要
トラフィックは、十分にモニタリングされ、輻輳のない冗長な AWS グローバルネットワーク経由でエンドポイントに移動します。Global Accelerator は、トラフィックが AWS ネットワーク上にある時間を最大化することで、トラフィックが常に最適なネットワークパス経由でルーティングされるようにします。Global Accelerator は、AWS エッジロケーションのクライアントからの TCP 接続を終了し、ほぼ同時にエンドポイントと新しい TCP 接続を確立します。これにより、クライアントは応答時間が短縮され (レイテンシーが短縮)、スループットが向上します。
Global Accelerator は、カスタムルーティングアクセラレーター上のエンドポイントのクライアント IP アドレスを常に保存します。標準アクセラレーターでは、一部のエンドポイントタイプのクライアント IP アドレスを保存してアクセスするオプションがあります。クライアント IP アドレスの保存サポートなど、Global Accelerator がサポートするエンドポイントタイプと設定の詳細については、アクセラレーターエンドポイントとして追加するリソースの要件 を参照してください。
標準アクセラレーターを使用すると、Global Accelerator はすべてのエンドポイントの正常性を継続的にモニタリングし、アクティブなエンドポイントが異常であると判断した場合、新しい接続のトラフィックを別の利用可能なエンドポイントに瞬時に送信し始めます。これにより、AWS 上のアプリケーションの高可用性アーキテクチャを作成できます。ヘルスチェックはカスタムルーティングアクセラレーターでは使用されず、トラフィックをルーティングする送信先を指定するためフェイルオーバーも行われません。
グローバルトラフィックをきめ細かく制御する場合は、標準アクセラレーターでエンドポイントの重みを設定できます。さらに、Global Accelerator のトラフィックダイヤルを使用して、パフォーマンステストやスタックアップグレードなど、特定のエンドポイントグループへのトラフィックの割合を増減 (ダイヤルアップ) できます。
アクセラレーターのタイプ
AWS Global Accelerator で使用できるアクセラレーターには、標準アクセラレーターとカスタムルーティングアクセラレーターの 2 種類があります。どちらのタイプのアクセラレーターも、パフォーマンスと安定性を向上させるために AWS グローバルネットワーク経由でトラフィックをルーティングしますが、それぞれ異なるアプリケーションニーズに合わせて設計されています。
- 標準アクセラレーター
標準アクセラレーターを使用することで、Application Load Balancer、Network Load Balancer、または Amazon EC2 インスタンス上で稼働するアプリケーションの可用性とパフォーマンスを向上させることができます。標準アクセラレーターを使用すると、Global Accelerator は、地理的近接性とエンドポイントのヘルスに基づいて、リージョンのエンドポイント間でクライアントトラフィックをルーティングします。また、トラフィックダイヤルやエンドポイントの重みなどのコントロールに基づいて、エンドポイント間でクライアントトラフィックをシフトすることもできます。これは、ブルー/グリーンデプロイ、A/B テスト、マルチリージョンデプロイなど、さまざまなユースケースで機能します。その他のユースケースについては、AWS Global Accelerator ユースケースについて を参照してください。
詳細については、「AWS Global Accelerator での標準アクセラレーターの使用」を参照してください。
- カスタムルーティングアクセラレーター
カスタムルーティングアクセラレーターは、独自のアプリケーションロジックを使用して、多数の送信先とポートの中から特定の送信先とポートに 1 人または複数のユーザーを送信したい場合に適しています。この場合でも、Global Accelerator のパフォーマンス向上の利点を得ることができます。1 つの例は、音声、ビデオ、メッセージングセッションを開始するために、特定のメディアサーバーに複数の発信者を割り当てる VoIP アプリケーションです。もう 1 つの例は、地理的位置、プレイヤースキル、ゲームモードなどの要素に基づいて、複数のプレイヤーをゲームサーバー上の 1 つのセッションに割り当てるオンラインリアルタイムゲームアプリケーションです。
注記
カスタムルーティングアクセラレーターは、IPv4 IP アドレスタイプのみをサポートします。
詳細については、「AWS Global Accelerator でのカスタムルーティングアクセラレーターの使用」を参照してください。
特定のニーズに基づいて、これらのタイプのアクセラレーターの 1 つを作成して、顧客のトラフィックを加速します。
AWS Global Accelerator でのアイドルタイムアウトについて
AWS Global Accelerator は、接続に適用されるアイドルタイムアウト期間を設定します。アイドルタイムアウトが経過するまでデータが送受信されなかった場合、Global Accelerator は接続を閉じます。アイドルタイムアウト期間はカスタマイズできません。
接続のタイムアウトを防ぐために、Global Accelerator では、TCP 接続のタイムアウトウィンドウ内に、受信と送信の方向に少なくとも 1 バイトのデータを含むパケットを送信する必要があります。TCP キープアライブパケットを使用してオープン接続を維持することはできません。
ネットワーク接続のグローバルアクセラレーターのアイドルタイムアウトは、接続のタイプによって異なります。
TCP 接続のタイムアウトは 340 秒です。
UDP 接続のタイムアウトは 30 秒です。
Global Accelerator は、エンドポイントが異常とマークされている場合やアクセラレーターから削除されている場合でも、アイドルタイムアウトに達するまで、確立された接続のトラフィックをエンドポイントに転送し続けます。Global Accelerator は、必要に応じて、新しい接続が開始したとき、またはアイドルタイムアウトの後にのみ、新しいエンドポイントを選択します。
AWS Global Accelerator の静的 IP アドレスの使用
デフォルトでは、Global Accelerator はアクセラレーターに関連付けられた静的 IP アドレスを提供します。Global Accelerator がアクセラレーターに割り当てる静的 IP アドレス、または標準アクセラレーター用に独自の IP アドレスプールから指定する静的 IP アドレスを使用して、ユーザーの場所に関係なく、ユーザーの近くの AWS グローバルネットワークにインターネットトラフィックをルーティングします。標準アクセラレーターの場合、1 つまたは複数の AWS リージョン リージョンで実行される Network Load Balancer、Application Load Balancer、Amazon EC2 インスタンス、または Elastic IP アドレスにアドレスを関連付けます。カスタムルーティングアクセラレーターの場合、1 つ以上のリージョンの VPC サブネット内の EC2 送信先にトラフィックを誘導します。AWS グローバルネットワーク経由でトラフィックをルーティングすると、トラフィックがパブリックインターネット経由で複数のホップを経由する必要がないため、可用性とパフォーマンスが向上します。静的 IP アドレスを使用すると、受信アプリケーショントラフィックを複数の AWS リージョン での複数のエンドポイントリソースに分散することもできます。
さらに、静的 IP アドレスを使用すると、アプリケーションをより多くのリージョンに追加したり、リージョン間でアプリケーションを移行したりすることが容易になります。固定 IP アドレスを使用すると、ユーザーは変更時にアプリケーションに一貫した方法で接続できます。
必要に応じて、独自のカスタムドメイン名をアクセラレーターの静的 IP アドレスに関連付けることができます。詳細については、「カスタムドメイントラフィックをアクセラレーターにルーティングする」を参照してください。
静的 IP アドレスは、AWS エッジネットワークからのエニーキャストです。
IPv4 の場合、Global Accelerator は 2 つの静的 IPv4 アドレスを提供します。デュアルスタックの場合、Global Accelerator は 2 つの IPv4 アドレスと 2 つの IPv6 アドレス、合計 4 つのグローバルの静的 IP アドレスを提供します。Global Accelerator (IPv4 のみ) で使用する独自の IP アドレス範囲を AWS (BYOIP) にする場合は、代わりに、アクセラレータで使用する IPv4 アドレスを独自のプールから割り当てることができます。詳細については、「Global Accelerator の Bring your own IP (BYOIP)」を参照してください。
デュアルスタックのアクセラレーターの場合、Global Accelerator は同じ 2 つの /64 CIDR プレフィックスから IPv6 アドレスを割り当てます。これにより、ACL コントロールの許可リスト化と設定の手順を簡素化できます。
IPv4 IP アドレスタイプ用に設定された標準アクセラレーターに IPv4 専用のエンドポイントを追加できますが、デュアルスタックとして設定したアクセラレーターでは、デュアルスタックもサポートするエンドポイントのみを追加する必要があります。デュアルスタックアクセラレータでサポートされているエンドポイントの詳細については、「アクセラレーターエンドポイントとして追加するリソースの要件」を参照してください。
Global Accelerator は、独自の IP アドレス範囲を AWS にし、そのプールから静的 IP アドレスを指定しない限り、Amazon の IP アドレスプールから静的 IP アドレスを提供します。(詳細については、Global Accelerator の Bring your own IP (BYOIP) を参照してください)。コンソールでアクセラレーターを作成するには、最初のステップとして、アクセラレーターの名前を入力するか、独自の静的 IP アドレスを選択して静的 IP アドレスをプロビジョニングするように Global Accelerator に指示します。アクセラレーターを作成する手順については、AWS Global Accelerator の開始方法 を参照してください。
静的 IP アドレスは、アクセラレーターを無効にし、トラフィックを受け入れたりルーティングしたりしなくなった場合でも、存在する限り、アクセラレーターに割り当てられたままになります。ただし、アクセラレーターを削除すると、そのアクセラレーターに割り当てられた静的 IP アドレスが失われるため、それを使用してトラフィックをルーティングできなくなります。Global Accelerator では、タグベースのアクセス許可などの IAM ポリシーを使用して、アクセラレーターを削除するアクセス許可を持つユーザーを制限できます。詳細については、「Global Accelerator を使用した ABAC」を参照してください。
Global Accelerator がヘルスチェックを使用する方法
標準アクセラレーターの場合、AWS Global Accelerator は静的 IP アドレスに関連付けられているエンドポイントのヘルスを自動的にチェックし、ユーザートラフィックを正常なエンドポイントにのみ送信します。
Global Accelerator には、自動的に実行されるデフォルトのヘルスチェックが含まれていますが、チェックやその他のオプションのタイミングを設定できます。カスタムヘルスチェック設定を行う場合、Global Accelerator は設定に応じて特定の方法でそれらの設定を使用します。これらの設定は、Global Accelerator for Amazon EC2 インスタンスまたは Elastic IP アドレスエンドポイントで設定するか、Network Load Balancer または Application Load Balancer の Elastic Load Balancing コンソールで設定することができます。詳細については、「アクセラレーターのヘルスチェックアクセスを確保する」を参照してください。
標準アクセラレーターにエンドポイントを追加する場合、トラフィックが転送される前にヘルスチェックに合格する必要があります。Global Accelerator に、標準アクセラレーター内の にトラフィックをルーティングする正常なエンドポイントがない場合、リクエストはすべてのエンドポイントにルーティングされます。
トラフィックダイヤルとエンドポイントの重みを使用してトラフィックフローを管理する方法
AWS Global Accelerator が標準アクセラレーターを使用してエンドポイントにトラフィックを送信する方法をカスタマイズする方法は 2 つあります:
トラフィックダイヤルを変更して、1 つ以上のエンドポイントグループのトラフィックを制限する
グループ内のエンドポイントへのトラフィックの割合を変更する重みを指定する
- トラフィックダイヤルの仕組み
標準アクセラレーター内のエンドポイントグループごとに、エンドポイントグループに送信するトラフィックの割合を制御するようにトラフィックダイヤルを設定できます。この割合は、リスナー全体のトラフィックではなく、すでにエンドポイントグループに向けられているトラフィックにのみ適用されます。
トラフィックダイヤルは、エンドポイントグループが受け入れるトラフィックの一部を制限し、そのエンドポイントグループに転送されるトラフィックの割合で表します。例えば、
us-east-1
でエンドポイントグループのトラフィックダイヤルを 50 (つまり 50%) に設定し、アクセラレーターがそのエンドポイントグループに 100 件のユーザーリクエストを指示する場合、グループが受け入れるリクエストは 50 件のみです。アクセラレーターは、残りの 50 件のリクエストを他のリージョンのエンドポイントグループにルーティングします。詳細については、「トラフィックダイヤルを使用してリージョンへ送信するトラフィックフローを調整する」を参照してください。
- 重みの仕組み
標準アクセラレーターの各エンドポイントに対して、重みを指定できます。重みは、アクセラレーターが各エンドポイントにルーティングするトラフィックの割合を変更する数値です。これは、リージョン内でパフォーマンステストを実行する場合などに便利です。
重みは、アクセラレーターがエンドポイントに送信するトラフィックの割合を決定する値です。デフォルトでは、エンドポイントの重みは 128 です。つまり、重みの最大値の半分である 255 です。
アクセラレーターは、エンドポイントグループのエンドポイントの重みの合計を計算し、各エンドポイントの重みと合計の比率に基づいてトラフィックをエンドポイントに送信します。重みの仕組みの例については、 エンドポイントの重みがトラフィックボリュームを管理する仕組み を参照してください。
トラフィックダイヤルと重みは、標準アクセラレーターがさまざまな方法でトラフィックを処理する方法に影響します。
エンドポイントグループのトラフィックダイヤルを設定します。トラフィックダイヤルを使用すると、アクセラレーターが既に送信したトラフィックを近接性などの他の要素に基づいて「ダイヤルダウン」することで、グループへのトラフィックの割合、またはすべてのトラフィックをカットできます。
一方、重みを使用して、エンドポイントグループ内の個々のエンドポイントの値を設定します。重みは、エンドポイントグループ内のトラフィックを分割する方法を提供します。例えば、重みを使用して、リージョン内の特定のエンドポイントのパフォーマンステストを実行できます。
トラフィックのダイヤルと重みがフェイルオーバーにどのように影響するかの詳細については、異常なエンドポイントに対するフェイルオーバーの仕組み を参照してください。
ICMP レスポンスメッセージと AWS Global Accelerator
ICMP Packet Too Big
や Fragmentation Needed
などの ICMP レスポンスメッセージは、インターネット上での可用性を確保するのに役立ちます。AWS Global Accelerator は、すべてのグローバル IP アドレスのエッジで ICMP エコーメッセージ (ping) に応答します。これらの ping はお客様のエンドポイントに転送されません。Global Accelerator でパフォーマンスを正確にテストするには、テストに詳細なプロトコルを使用します。
ここでは、ICMP がインターネットの可用性を確保する方法の概要を示します。ネットワーク接続の最大送信単位 (MTU) とは、接続を介して渡すことができる最大許容パケットサイズ (バイト単位) です。接続の MTU が大きいほど、より多くのデータを単一のパケットで渡すことができます。2 つのデバイス間のパス MTU を判断するために、パス MTU 検出 (PMTUD) が使用されます。パス MTU は、送信側ホストと受信側ホスト間のパスでサポートされている最大のパケットサイズです。2 つのホスト間でネットワーク内の MTU サイズに差がある場合、MTU より大きいパケットはドロップされ、パケットをドロップした受信ホストは送信者に ICMP メッセージで通知します。詳細については、「パス MTU 検出」を参照してください。
Global Accelerator のアクセラレーターで ICMP トラフィックをブロックすることはできません。すべての ICMP トラフィックをブロックすると、ICMPv6 Packet Too Big (PTB)
(タイプ 2) や Destination Unreachable: Fragmentation Needed
and Don't Fragment was Set
(タイプ 3、コード 4) などの ICMP メッセージも削除されます。これらのメッセージは、トラフィックが発信元ホストに正常に返すために必要です。次に、これらのメッセージがドロップされると、Global Accelerator 上に構築された TCP とプロトコルが、通常よりも小さな MTU を持つネットワーク上のクライアントからのトラフィックをドロップし、PMTUD が防止されます。
PMTUD を機能させるには、エンドポイントのセキュリティグループも ICMP トラフィックを許可する必要があります。特定のエンドユーザーネットワークに固有の可用性の問題がある場合は、エンドポイントセキュリティグループが ICMP トラフィックを許可していることを確認します。