单机程序向分布式的问题之一-Session保持

当从单机程序部署到多台分布式服务式,经常会遇过这些问题:

 

     1、session不能保持;由于是多台服务器再加上有负载均衡,所以页面里的每个请求,没准会分配到哪个服务器上。

解决方案:

     1、最简单的办法:利用nginx的ip_hash分配方式,使用同一IP请分配到固定的服务器。

但是这种办法有多种限制,类如nginx必须是最前端的,前面不能有lvs之类的,否则获取来的IP只能是同一个达不到负载均衡的目的。再则公司网段的内网机器也是不可以的,因为这些机器的出口有可能是一个外网IP,或者固定几个IP。这样也达不到目的。

    2、采用nginx的扩展;nginx_upstream_jvm_route 是一个nginx的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能。 
简单来说,它是基于cookie中的JSESSIONID来决定将请求发送给后端的哪个server,nginx_upstream_jvm_route会在用户第一次请求后端server时,将响应的server标识绑定到cookie中的JSESSIONID中,从而当用户发起下一次请求时,nginx会根据JSESSIONID来决定由哪个后端server来处理。 
1/ nginx_upstream_jvm_route安装 
下载地址(svn):http://nginx-upstream-jvm-route.googlecode.com/svn/trunk/ 
假设nginx_upstream_jvm_route下载后的路径为/usr/local/nginx_upstream_jvm_route, 
(1)进入nginx源码路径 
patch -p0 < /usr/local/nginx_upstream_jvm_route/jvm_route.patch 
(2)./configure  --with-http_stub_status_module --with-http_ssl_module --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre-8.33 --add-module=/usr/local/nginx_upstream_jvm_route 
(3)make & make install 

 

 

参考

http://yangzb.iteye.com/blog/560421

http://stevenfeng.iteye.com/blog/1922118

http://www.douban.com/note/325861884/?type=like

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值