NLB で同一クライアントのリクエストが特定ターゲットに偏る事象を回避するには

2024.06.25

困っていた内容

NLB でクライアントからの HTTP リクエストを複数ターゲットに分散しています。
ターゲット側の状況を確認したところ、同一クライアントからのリクエストが常に特定ターゲットにルーティングされていました。
Cookie は使用していません。偏りを解消する方法を教えてください。

どう対応すればいいの?

ターゲットグループで属性の「維持設定」を確認してください。

NLB のスティッキーセッション(維持設定)を有効にすると、送信元の IP アドレスベースでリクエストを振り分けます。そのため維持設定が有効になっていると、同一クライアントからのリクエストは、同じターゲットにルーティングされます。

従って、ターゲットグループで属性の「維持設定」が有効になっている場合は、無効にすることを検討してください。

「維持設定」が無効の場合は次のトラブルシューティングもお試しください。

なお、ALB ではリクエストを Cookie ベースで振り分けます。

参考資料

スティッキーセッションを使用すると、接続とフローの分散が不均一になり、ターゲットの可用性に影響する場合があります。たとえば、同じ NAT デバイスの背後にあるすべてのクライアントの送信元 IP アドレスは同じです。したがって、これらのクライアントからのすべてのトラフィックは、同じターゲットにルーティングされます。

スティッキー セッション (stickiness)
同じクライアントからのリクエストを全て同じEC2インスタンスに送信する仕組み
• ALBではCookieベースで制御する。デフォルトで無効
• NLBでは送信元IPアドレスベースで制御する。こちらもデフォルトで無効。NAT経由だったり、送信元IPが限定されている時はうまく分散されなくなるので注意

ロードバランサーは、プロトコル、送信元 IP アドレス、送信元ポート、宛先 IP アドレス、宛先ポート、および TCP シーケンス番号に基づいて、フローハッシュアルゴリズムを使用してターゲットを選択します。