nginx+tomcat实现redis会话共享

作者:Garany 发布于:2016-11-28 分类:破万卷书
规划:
nginx 80 /etc/nginx
tomcat01-1 8001 8081 /opt/tomcat01-1
tomcat01-2 9001 9091 /opt/tomcat01-1
redis 6379

1.安装nginx、tomcat7、JDK7、redis
详见:
redis
tomcat单机多实例

设置redis密码和绑定地址
# vim /etc/redis.conf
requirepass 123456
bind 127.0.0.1

2.修改nginx配置文件
# vim /etc/nginx/nginx.conf
user nginx;
worker_processes  2;
error_log  /data/logs/nginx/error.log error;
pid /var/run/nginx.pid;
events {
use epoll;
    worker_connections  1024;
}
http {
    server_tokens off;
    autoindex off;
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    sendfile on;
    keepalive_timeout  65;
    gzip  on;
#负载均衡
    upstream web {
      server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;
      server 127.0.0.1:9091 weight=1 max_fails=2 fail_timeout=30s;
     }  
include /etc/nginx/conf.d/*.conf;
}

# vim /etc/nginx/conf.d/web.conf 

server {

    listen  80;
    server_name  www.test.com;
        location / {
            index  index.html index.jsp;
            proxy_pass http://web;
            proxy_redirect          off;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}
3.修改$TOMCAT_HOME/conf/context.xml文件
# vim /opt/tomcat01-1/conf/context.xml
添加
<Valve  className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="127.0.0.1" <!-- Redis地址 -->
port="6379" <!-- Redis端口 -->
password="123456" <!-- Redis密码 -->
database="1" <!-- 存储会话的Redis库 -->
maxInactiveInterval="60" <!-- 会话失效的间隔(秒) -->
/>

# cp /opt/tomcat01-1/conf/context.xml /opt/tomcat01-2/conf/

4.添加对应的jar包到$TOMCAT_HOME/lib
# ll
commons-pool-1.6.jar
jedis-2.2.0.jar
tomcat-redis-session-manager-1.2-tomcat-7.jar
包链接
# cp ./* /opt/tomcat01-1/lib/
# cp ./* /opt/tomcat01-2/lib/

5.添加redis测试页面到$TOMCAT_HOME/webapps/ROOT/
# vim /opt/tomcat01-1/webapps/ROOT/redis.jsp 
<%@ page language="java" %>
<html>
  <head><title>API-1</title></head>
  <body>
    <h1><font color="green">Tomcat01-1</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("tomcat.suzf.net","tomcat.suzf.net"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>

# vim /opt/tomcat01-2/webapps/ROOT/redis.jsp 
<%@ page language="java" %>
<html>
  <head><title>API-2</title></head>
  <body>
    <h1><font color="green">Tomcat01-2</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("tomcat.suzf.net","tomcat.suzf.net"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>

6.分别启动nginx、redis、tomcat01-1、tomcat01-2
# /etc/init.d/nginx restart
# redis-server  /etc/resolv.conf
# /opt/tomcat01-1/bin/startup.sh
# /opt/tomcat01-2/bin/startup.sh

7.验证
访问http://www.test.com/redis.jsp 查看前后两次访问到的Session ID 和Created on 是否一致


我来说说