1. ホーム

[解決済み】スティッキーセッションとノンスティッキーセッション

2022-04-01 05:14:05

質問

粘着式セッションと非粘着式セッションの違いを知りたい。インターネットを読んで理解したこと。

粘着性 : 単一のセッションオブジェクトのみが存在します。

非スティッキーセッション : 各サーバーノードのセッションオブジェクト

解決方法は?

あなたのウェブサイトが1つのウェブサーバーによってのみ提供されている場合、クライアントとサーバーのペアごとに、セッションオブジェクトが作成され、ウェブサーバーのメモリに残ります。クライアントからのすべてのリクエストはこのウェブサーバーに送られ、このセッションオブジェクトを更新します。対話の期間中、何らかのデータをセッションオブジェクトに保存する必要がある場合、そのデータはこのセッションオブジェクトに保存され、セッションが存在する限りそこに留まります。

しかし、あなたのウェブサイトがロードバランサーの背後にある複数のウェブサーバーによって提供されている場合、ロードバランサーは各要求がどの実際の(物理)ウェブサーバーに送られるべきかを決定します。例えば、ロードバランサーの後ろに3つのウェブサーバーA、B、Cがある場合、次のようなことが起こり得ます。 www.mywebsite.com がサーバAから配信されます。 www.mywebsite.com はサーバーBから提供され www.mywebsite.com / はサーバーCから提供されます。

さて、リクエストが(物理的に)3つの異なるサーバから提供されている場合、それぞれのサーバはあなたのためにセッションオブジェクトを作成し、これらのセッションオブジェクトは3つの独立したボックスに置かれているので、一方が他方のセッションオブジェクトにあるものを直接知る方法はないのです。これらのサーバーセッションを同期させるために、セッションデータをDBのような共通のレイヤーに書き込んだり、読み込んだりする必要があります。しかし、このような用途でDBにデータを書き込んだり、DBからデータを読み出したりするのは良い考えではないかもしれません。さて、ここで登場するのが スティッキーセッション .

ロードバランサーがスティッキーセッションを使うように指示されている場合、他のサーバーが存在していても、すべてのインタラクションは同じ物理サーバーで起こります。したがって、あなたのセッションオブジェクトは、このウェブサイトとのやりとりの全体を通して同じものになります。

要約すると、スティッキーセッションの場合、すべてのリクエストは同じ物理ウェブサーバーに向けられ、スティッキーでないロードバランサーの場合は、どのウェブサーバーを選んでリクエストに対応してもよいということです。

例として、AmazonのElastic Load Balancerとスティッキーセッションについては、こちらをご覧ください。 http://aws.typepad.com/aws/2010/04/new-elastic-load-balancing-feature-sticky-sessions.html