これまでに、リクエストがロードバランサーからプールへ、さらにプールから個々のサーバーへ進む流れを説明しました。
一方で、ロードバランサーとプールが どのように その判断をするかには触れていませんでした。
この仕組みがルーティングです。
ルーティングでは、一般に次の 5 つの問いがあります。
- デフォルトでは、ロードバランサーはリクエストをどのようにプールへ振り分けますか。
- デフォルトでは、プールはリクエストをどのように個々のサーバーへ振り分けますか。
- プール内のどのサーバーが健全ですか。
- ロードバランサー内のどのプールが健全ですか。
- 特別なルーティングルールはありますか。
ロードバランサーの トラフィックステアリングポリシー が、リクエストをプールへどう振り分けるかを制御します。
経路の判断は、近接性、プールのパフォーマンス、地理などにもとづきます。
リクエストがプールに届くと、そのプールの エンドポイントステアリングポリシー が、プール内のサーバーへどう振り分けるかを制御します。
判断の根拠は、各サーバーへ送るトラフィックのデフォルト割合(Weight)、リクエストの属性(送信元 IP アドレスなど)、またはその両方です。
エンドポイントがヘルスチェックに失敗すると、そのエンドポイントは不健全と見なされます。プールはエンドポイントステアリングポリシーに従って経路を調整します。
新規リクエストも既存リクエストも、不健全なエンドポイントを除き、プール内の健全なエンドポイントへ向かいます。
不健全なエンドポイントが十分に増えると、プール自体も不健全と見なされることがあります。
プールが Critical ヘルスになると、ロードバランサーは Traffic steering ポリシー に従ってトラフィックを迂回し始めます。
-
Off:
- アクティブなプールが unhealthy になると、トラフィックは順序どおり次のプールへ送られます。
- 非アクティブなプールが unhealthy になっても、トラフィックはアクティブなプールへ送られ続けます(フェイルオーバー順では unhealthy なプールをスキップします)。
-
その他の方法: 残りのすべてのプールに、Traffic steering ポリシーに従ってトラフィックが分散されます。
ロードバランサーには、状況に関係なくトラフィックを受け取る特別なプール(Fallback Pool)があることがよくあります。
このプールは最終手段のプールです。トラフィックを振り分けるとき、このプールのヘルスは考慮されません。
フォールバックプールは重要です。すべてのプールに到達できない(無効または異常)場合でも、ロードバランサーへトラフィックが届くことがあります。ロードバランサーはこのトラフィックの送り先が必要なため、フォールバックプールへ送ります。
さらに、次のような設定も、ロードバランサーのトラフィック振り分けに影響します。
- リクエストの 特定の属性 にもとづいてルーティングします。
- 特定のエンドユーザー からのリクエストをすべて同じサーバーへ送り、ショッピングカートの中身などセッション情報を維持します。