AWS Global Accelerator が別のリージョンのエンドポイントにフェイルオーバーする原因をトラブルシューティングしたいと考えています。
簡単な説明
AWS Global Accelerator は、トラフィックダイヤル設定を使用してトラフィックをエンドポイントグループにルーティングします。また、エンドポイントのウェイトを使用して、エンドポイントに送られるトラフィックの割合を決定します。重みがゼロ (0) より大きい正常なエンドポイントがない場合、Global Accelerator は別のエンドポイントグループの重みが 0 より大きい正常なエンドポイントにフェイルオーバーします。
解決方法
トラフィックダイヤル設定とエンドポイントグループのエンドポイントウェイトを確認して、グローバルアクセラレータが別のエンドポイントグループにフェールオーバーしないようにします。次に、エンドポイントの正常性を確認します。
トラフィックダイヤルの設定を確認する
グローバルアクセラレータは、トラフィックダイヤルを使用して異なるエンドポイントグループ間でトラフィックをルーティングします。トラフィックダイヤルが 0 のエンドポイントグループはトラフィックを受信しません。ただし、重みが 0 より大きいエンドポイントグループに正常なエンドポイントがない場合、アクセラレータは、エンドポイントが正常で重みが 0 より大きい別のエンドポイントグループにフェイルオーバーします。このフェールオーバーでは、アクセラレータはトラフィックダイヤル設定を無視します。
例: グローバルアクセラレータを 3 つのエンドポイントグループで構成し、トラフィックダイヤル設定を次のようにしたとします:
エンドポイントグループ 1: ダイヤル 100
エンドポイントグループ 2: ダイヤル 0
エンドポイントグループ 3: ダイヤル 0
EndpointGroup 1 に重みが 0 を超える正常なエンドポイントがない場合、グローバルアクセラレータはさらに 2 つのエンドポイントグループが正常かどうかをチェックします。エンドポイントグループ 2 と 3 がクライアントに最も近く、重みが 0 より大きく、正常であれば、アクセラレータはフェールオーバーします。トラフィックダイヤル設定は無視して、これらのエンドポイントグループのエンドポイントにトラフィックをルーティングします。
エンドポイントグループ内のエンドポイントの重みを確認
グローバルアクセラレータは、ウェイトを使用してエンドポイントグループ内のトラフィックをルーティングします。重みが 0 のエンドポイントは、エンドポイントが正常であってもトラフィックを受信しません。すべてのエンドポイントのウェイトが 0 の場合、アクセラレータは別のエンドポイントグループでウェイトが 0 より大きいエンドポイントを見つけようとします。重みが 0 を超える正常なエンドポイントが見つかると、アクセラレータはそのエンドポイントにトラフィックをルーティングします。そうでない場合、アクセラレータはフェイルオープンされ、最も近いエンドポイントグループのエンドポイントが含まれます。
例: インスタンス 1 を EndpointGroup 1 のエンドポイントとして設定し、インスタンス 2 を EndpointGroup 2 のエンドポイントとして設定したとします。インスタンス 1 の重みが 0 の場合、アクセラレータはフェイルオーバーし、インスタンス 2 が正常で重みが 0 より大きい場合にトラフィックをルーティングします。
エンドポイントが正常かどうかを確認する
ヘルスチェックステータスを使用して、エンドポイントがヘルスチェックに合格しているかどうかを確認します。ヘルスチェックの失敗を修正する方法の詳細については、「Global Accelerator がエンドポイントのヘルスチェックに失敗する理由」を参照してください。
関連情報
AWS Global Accelerator を使用して AWS にマルチリージョンアプリケーションをデプロイする
AWS Global Accelerator でのトラフィック管理