SSH项目在Windows server2012实现session共享和nginx负载均衡

公司的一个SSH项目因为用户不断增加,需要增加一个服务器。项目比较久远,所以当时并没有考虑集群的模式,所以需要现在解决session共享问题。这里采用三台服务器一台nginx服务器,两台Tomcat服务器

一、Tomcat7实现利用redis实现session

在服务器先安装redis修改配置文件为其他ip可以访问,并设置密码。具体操作这里不重复了,下面开始Tomcat+redis实现session共享:

1.1 首先下载tomcat-redis-session-manager的项目,下载地址:

          https://github.com/jcoleman/tomcat-redis-session-manager

1.2 然后在本地新建一个maven项目,包名为com.orangefunction.tomcat.redissessions。项目名称随意,如tomcat-redis-session。然后把下载的项目解压,复制src下的所有文件到新建项目的对应包下。

SSH项目在Windows server2012实现session共享和nginx负载均衡_第1张图片

1.3 修改pom.xml文件

  
  
    
        org.apache.tomcat
        tomcat-catalina
        7.0.27
    
    
        redis.clients
        jedis
        2.5.2
    
    
        org.apache.commons
        commons-pool2
        2.2
    

  

  
    
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.0
            
                1.7
                1.7
                UTF-8
            
        
    
  

1.4 修改RedisSessionManager中的redis配置信息(后来发现配置信息不是从这里读取的,不改好像也没事。)

SSH项目在Windows server2012实现session共享和nginx负载均衡_第2张图片

1.5 把项目打包成jar包

1.6 把打好的包tomcat-redis-session.jar和maven仓库中的commons-pool2-2.2.jar、jedis-2.5.2.jar两个包一起拷贝到Tomcat中lib文件夹下

SSH项目在Windows server2012实现session共享和nginx负载均衡_第3张图片

1.7 在tomcat配置文件context.xml中增加下面内容


	
	

SSH项目在Windows server2012实现session共享和nginx负载均衡_第4张图片

以上tomcat配置完毕

二、nginx的配置

2.1 修改nginx配置文件nginx.conf,如果没有这段内容就在http标签内填加。

SSH项目在Windows server2012实现session共享和nginx负载均衡_第5张图片

    #服务器列表
    upstream mysvr {  
	server 192.168.1.179:8080;  
        server 192.168.1.178:8080;
		
    }  
  
    #反向代理配置  
    server {  
		listen       80;  
		server_name  127.0.0.1;
		charset utf-8;  
		location /{  
			proxy_pass  http://mysvr; #请求转向mysvr 定义的服务器列表
		}  
	}

nginx配置完毕

之后就分别启动两个tomcat和nginx,登录之后session就能正确获取到。

注意:

1、在项目的 web.xml中一定不能有任何对session设置修改的情况,否则session共享无效!!坑了我好久

             我们的项目里设置session超时时间,把代码注释掉就好了。下面这段代码

             SSH项目在Windows server2012实现session共享和nginx负载均衡_第6张图片

2、redis的地址、端口和密码是从context.xml中读取过来的,不是从项目中配置的。

你可能感兴趣的:(运维)