Dubbo-redis3解决负载均衡Session共享

      由于redis3.0在2015年才出稳定版本,所以可能一些文档比较欠缺,如果有什么疑问可以看一下这个网址。tomcatRedisClusterEnableSessionManager  首先要准备tomcat集群,并且实现nginx的负载均衡。前期的工作我这里就不详细介绍了。还有关于网上一些解决session共享的一些思路,也可以参考一下下面的的博客 解决nginx负载均衡的session共享问题。下面我只说一下关于redis3.0如何解决session共享的问题。


      一、首先要修改Keepalived-Nginx组成的反向代理集群中的两个节点同步增加两处配置:


       ##web-boss(消费端)

       upstream web_boss{

server 192.168.152.128:8082 weight=1 max_fails=2 fail_timeot=30s

server 192.168.152.129:8082 weight=1 max_fails=2 fail_timeot=30s

}

#web-boss Cluster

location /pay-web-boss{

root html;

index index.html index.htm;

proxy_pass http://web_boss/pay-web-boss

proxy_set_header Host $http_host;

proxy_set_header Cookie$httpv_cookie;

proxy_set_header X-Real-IP $remote_addr_x_forwarded_for;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

client_max_body_size 100m;


}

然后重启nginx。这样tomcat集群建立好了。

但是我们会发现,通过vip节点访问服务节点的时候,会出现请求失败这样的操作,由于请求节点是随机性的,有可能sessionId存在另一个节点的服务器上,所以会导致这样的sessionid不共享的情况。


二、解决session不共享


注意:因为使用的是redis3.0集群,相应的插件一定要支持redis3.0集群。

1、下载

https://codeload.github.com/ran-jit/TomcatClusterRedisSessionManager/zip/master

        解压,找到lib目录中的jedis-3.0.0-SNAPSHOT.jar  commons-pool2-2.2.jar commons-logging-1.1.jar 并将这三个jar包上传到Tomcat7中的lib目录。

https://github.com/ran-jit/TomcatClusterRedisSessionManager/releases/download/1.1/TomcatRedisSessionManager-1.1.zip

解压后得到:TomcatRedisSessionManager-1.0.jar和redis.properties

2.配置redis.properties,集群中的IP:端口号用英文逗号隔开,打开Redis集群模式

注意:此插件支持单节点的Redis,也支持Redis集群,只需要在redis.properties中配置即可。

# redis hosts ex: 127.0.0.1:6379, 127.0.0.2:6379, 127.0.0.2:6380, ....

redis.hosts=127.0.0.1:6379, 127.0.0.2:6379, 127.0.0.2:6380, ....

# Redis Password

redis.password=

# set true to enable redis cluster mode

redis.cluster.enabled=true  

配置好后把redis.properties 上传到Tomcat7中的conf目录;将自定义的redis.properties替换掉TomcatRedisSessionManager-1.0jar

3.将TomcatRedisSessionManager-1.0.jar上传到Tomcat中的lib目录中。

4.在Tomcat7中的conf/context.xml中增加如下两行配置:

5.重启tomcat集群。最后检查在请求服务的时候,是否还会出现请求不到的情况。

  

你可能感兴趣的:(▶,【Dubbo】)