急!急!急!nginx+tomcat做负载均衡设置了ip_hash,同一台手机的请求不能转发到相同的tomcat

仁江 发布于 2016/08/05 11:45
阅读 1K+
收藏 0

配置是这样的。为了防止session失效问题,用了ip_hash的方式,但是从tomcat日志来看发现请求还是乱来转发,同一台手机一会转到8080,一会儿转到9090.导致session丢失。现在项目上线,这问题烦死了。求解决办法。不要说什么用cookie代替,用缓存代替session的方法,急着上线,就要用ip_hash的方式搞定session。

我昨晚把版本从nginx升级到1.10后我测试是一直转到同一个tomcat的,今天早上一看请求又乱转到2个tomat。都不知道什么问题,急急急~~

upstream wx.dinghu.com{
    ip_hash;
    server 127.0.0.1:8080 weight=5;
    server 127.0.0.1:9090 weight=5;
}
server {
    listen       80;
    server_name  wx.dinghu.com;
    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;
    location / {
        proxy_pass http://wx.dinghu.com;
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    #error_page  404              /404.html;

加载中
0
robingao
robingao
有粘性session 的方案,,,同一个session有效状态只访问一个tomcat: 类似的帖子: http://www.open-open.com/lib/view/open1451574526620.html
对应的nginx 可能有版本的要求,,,应该是1.4以下的吧.
我们用过,,,不过现在都改成无状态的了.
仁江
仁江
回复 @robingao : 是啊,我一开始想用memcached-session-manager做session共享的,但是不知道是版本对不上还是什么,搞了两天都搞不定。所以最后采用了这个方案
robingao
robingao
也可以采用session共享, 不过也有许多坑要踩...
仁江
仁江
其他方法都试过了,最后还是用了这个
仁江
仁江
这个nginx_upstream_jvm_route模板只能在安装nginx的时候安装吗。我的nginx已经安装了。怎么加进去
0
ylxs90
ylxs90
妈的智障,手机的IP怎么可能不变?就算你是在局域网里测的,可以确保IP不变。那现实呢?手机IP一直在变,还急着上线。。重做吧
仁江
仁江
但是他不可能不断的在变吧?起码有个时间的吧?现在是一直站在一个地方,就算是用wifi也是一样。不断的点页面都随机的分配到了不同的tomcat。总不能和老板说,不上了,重做吧
0
OSC_代码审查官
OSC_代码审查官
做session同步吧
0
姚海涛
姚海涛
要改为无状态服务,不用session.性能还高些
0
公孙二狗
公孙二狗

做集群,session 放到公共的地方,例如数据库,Redis 等,甚至 Cookie 里

迷路的游侠
迷路的游侠
回复 @仁江 : 改动比你想象的小的多
公孙二狗
公孙二狗
回复 @仁江 : 还有一种方案,在 cookie 里加上服务器的 id, Nginx 这里用脚本读取 Cookie,判断是哪个服务器的,然后让其访问对应的服务器。写 Cookie 可以用 Filter,Nginx 这里好像用 Lua
仁江
仁江
改动太大,不要这种方案。
0
jackie_123
jackie_123
双卡双带的手机会有网络切换 手机的ip也会变的 不做session共享比较难处理 有tomcat+redis 或 tomcat+memcached 会话共享的
0
嘻哈开发者
嘻哈开发者
用memcached-session-manager,只要配置一下tomcat,再加个memcached就行了
仁江
仁江
大哥,帖子在这里 http://www.oschina.net/question/566297_2190836 帮忙看看为什么会这样
仁江
仁江
按文档配置好之后进入项目就报错 java.lang.NoSuchFieldError: attributes at de.javakaffee.web.msm.MemcachedBackupSession.getAttributesFiltered(MemcachedBackupSession.java:522)
0
原版什锦八宝饭
原版什锦八宝饭

ip_hash 这个不太理想。建议使用会话亲和。可参考

http://www.ttlsa.com/nginx/nginx-modules-nginx-sticky-module/

0
南湖船老大
南湖船老大

集群环境下的用户会话方案

注意:客户端IP可能会变化很频繁,并不是重启路由才会变。
返回顶部
顶部