今回は前回の記事に基づいてセッション共有の問題を実装しました
Nginxマシン: 192.168.1.108
2 つの Tomcat マシンは: 192.168.1.168
192.168.1.178
1: セッション共有の問題をテストします
元のindex.jspページに次のコードを追加します
SessionId :<%= session.getId() %>
<% String username =(String)session.getAttribute("username");
if(!"".equals(username)&& username!=null){
out .print("------ユーザー名は "+session.getAttribute("ユーザー名"));
} else {
out.print("------開始ユーザー名は null"); session.setAttribute("username", "lxs");
out.print("------今のユーザー名は "+session.getAttribute("username"));
}
%>
この時、nginxでアクセスした際、最初のアクセスは178マシンでした
再度リフレッシュすると168マシンにアクセスされました
現時点ではセッションが共有されていないことがわかります。セッションはクラスターの下に個別に作成されます
2 番目: Redis を使用してセッション共有を実装します
セッション共有を実現するにはさまざまな方法があります。今回は、共有を実現するためにセッションを Redis に保存することが重要です。
1. redis をインストールします (インストール方法を参照してください)
redis は 192.168.1.108 にもインストールされます。これは Nginx と同じマシンにインストールされます
2. 必要な jar をコピーしますパッケージを個別に 2 つの Tomcat の lib ディレクトリに移動します
3. コンテキスト内のコンテンツを変更します
ここで、className は固定され、jar パッケージから取得されます。
host は Redis のホスト名、port は
maxInactiveInterval はセッションの生存時間
を表します。 4. セッション共有を再度テストします 最初の 3 つの手順の後、redis でのセッション共有の問題が実現しました redis、nginx、tomcat をそれぞれ起動します。 192.168 を再び .1.108:7777/nginxTest/ このとき、nginx は最初にマシン 178 に転送します。このとき、セッション内のユーザー名は空であり、次に username に値を格納します。それを印刷します
この時点で、nginx は 168 マシンに転送されます 。この時点では、セッション ID は 178 と同じです。同時に、ユーザー名にも値があり、値 が直接出力されます。これは、この時点でセッションが共有されており、対応するセッションもredis に保存されていることを示しています。
以上がRedis を使用して Tomcat クラスターでセッション共有を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。