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下的所有文件到新建项目的对应包下。

1.3 修改pom.xml文件

  <dependencies>
  <!-- tomcat7 source1.7  -->
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-catalina</artifactId>
        <version>7.0.27</version>
    </dependency>
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.5.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>2.2</version>
    </dependency>

  </dependencies>

  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.0</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
  </build>

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

1.5 把项目打包成jar包

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

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

<!-- redis session 共享配置 -->
	<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
	<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" 
		host="192.168.1.153" 
		port="6379" 
		password="*******" 
		database="0" 
		maxInactiveInterval="60" />

以上tomcat配置完毕

二、nginx的配置

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

    #服务器列表
    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超时时间,把代码注释掉就好了。下面这段代码

            

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值