2017-09-28 17 views
0

学生が使用するオンラインテストアプリケーションがあります。 私たちは、4つの異なるサーバとNginxを持っていて、4つのサーバすべての間でトラフィックの負荷を分散します。Nginxロードバランサ(ip_hash)がすべてのトラフィックをシングルサーバに送信

私たちのアプリケーションは、(1人のユーザのために、1つのサーバへのすべての要求)スティッキセッションを必要とするので、負荷分散のためにip_hashアルゴリズムを有効にしました。

私たちは、各システムにプライベートIPが割り当てられ、すべてがパブリックIPを使って1つのインターネットゲートウェイ経由で渡されるコンピュータラボですべての生徒がオンラインテストを行うようになっています。

生徒がテストロードバランサに表示されるとき、すべての生徒に同じ発信元IPが与えられ、ip_hashによってすべてのトラフィックが1台のサーバに送信されます。

この問題を解決するにはどうすればよいですか?

私たちは等負荷分散でスティッキセッションを維持しています。

答えて

0

stickyディレクティブを使用して、少なくともnginx +のようなクッキーに基づく負荷分散が可能です。

は、使用するサーバーを示すクッキーを設定します。これは、あなたがnginxでssl終了をしている必要があります。 nginxの無料版がこれを行うことができるかどうかはわかりません。 詳細については、ドキュメントを参照してください

+0

すぐにお返事ありがとうございます。 しかし、私はnginxの無料版を持っています。 負荷分散のために応答ヘッダーのJSESSIONIDをハッシュで使用できますか。 これは私のレスポンスヘッダーです: **セットクッキー:JSESSIONID = DD622D9F8108FA00CEEADDBCC6E91B1C;パス= /; HttpOnly ** –

0

このdocumentationページには、これがなぜ起こっているのかが記載されています。 ip-hashディレクティブは、IPアドレスの最初の3オクテットだけをハッシュします。

代わりにhash $remote_addr;を使用して、すべての4オクテットに基づいてハッシュすることができます。

関連する問題