2 つの大きなホスティング組織の 2 人のシステム管理者から、Varnish が Web サーバー間のセッション共有を処理すると教えてもらいました。私はこれをサポートするためにオンラインで何も見つけることができません. 男がワニスの従業員なのか、単なる貢献者なのか、それとも何なのかわかりません。
この点については、さらなる検証を求めています。
セッションは、多くのもの (ショッピング カート、ログインしているユーザーなど) を保存することを可能にし、通常は Cookie (例: sessionid
) によって識別されます。Web サーバーは、このセッション ID を使用してセッションを取得する方法を認識していますが (ショッピング カートにアクセス/更新できます)、varnish は Cookie のみを処理します。Varnish は、Cookie の値に関係なく、またはいくつかのルールに基づいて、バックエンドに対して負荷分散されたルックアップを実行できます (独自の varnish 構成を作成する必要があります)。
ただし、Web サーバー間でセッションを共有する場合の課題は、Web サーバーが別の Web サーバーによって作成/更新されたセッションにアクセスできるかどうかです。多くの Java Web コンテナーでは、セッションはデフォルトで (1 つの Web サーバーのみの) メモリに格納され、ロード バランサーはある種の「スティッキー セッション」メカニズムを実装します (セッションを持つユーザーを特定のバックエンドに常に送信し、ワニスで簡単にセットアップできます)。もう 1 つのオプションは、(シリアル化された) セッション値を共有データベースに保存することです。これにより、バックエンドから取得できるようになります (Web サーバーがダウンしても機能し続けます)。3 番目のオプションは、セッションを Cookie に完全にシリアル化し、セッション ID の使用を停止することですが、これは複雑です (サイズ、帯域幅に制限があり、セキュリティには何らかの署名メカニズムが必要ですが、スケーリングは優れています)。
すべてのアプローチには長所と短所があります。選択する必要があります。ワニスは任意のオプションをサポートしますが、「自動的に」あなたが望むことを行うわけではないので、ワニスの設定を少し書く準備をしてください...
負荷をどのように分散したいか、または何を達成しようとしているのかを説明すると、より具体的な回答が得られる可能性があります。