
nginxで負荷分散を設定するのはとても簡単試してみたいと思います。唯一の懸念はセッションについてです。セッションの持続性を実現するために、クライアントからの後続のすべての呼び出しを同じサーバーにルーティングするために、nginx をどのように活用できるでしょうか?
ありがとう
答え1
ip_hashディレクティブを使用する
答え2
代わりに、Nginx スティッキーモジュール
複数のバックエンド サーバーを扱う場合、1 つのクライアント (ブラウザー) が常に同じバックエンド サーバーによって処理されることが便利な場合があります (たとえば、セッションの永続性のため)。
IP による永続性 (ip_hash アップストリーム モジュールを使用) を使用することは、多くの異なるブラウザーが同じ IP アドレス (プロキシの背後) でアクセスする状況が発生する可能性があり、負荷分散システムが公平ではなくなるため、おそらく良い考えではありません。
クッキーを使用してアップストリーム サーバーを追跡すると、各ブラウザーが一意になります。
スティッキー モジュールを適用できない場合は、従来のラウンド ロビン アップストリームに戻るか、「Bad Gateway」を返します (no_fallback フラグによって異なります)。
ブラウザでクッキーがサポートされていない場合、スティッキーモジュールは適用できません
答え3
ip_hash は、セッションの nginx の負荷分散ルールです。ただし、nginx サーバーは実際の IP を取得する必要があります。フロント サーバーとして squid を使用する場合、nginx サーバーは squid の IP を取得します。次に、nginx は実際のサーバーに誘導する必要があります。nginx サーバーの後に他の負荷分散サーバーがある場合、セッションは同じ実際のサーバーに送信されません。