Nginx 实现web端负载均衡 业务系统数据不对

sxl_88 2018-01-13 11:53:03
利用Nginx 实现负载均衡,发现被代理的Web应用系统的数据混乱。
例如:Web应用系统,在合同模块中点击当前记录进入查看该记录详情,发现查看的是另一条记录的明细,再点击另一条记录,发现又串到其它的数据信息了。在该Web应用系统,基本上都是这种现象。

请问该现象如何解决。谢谢!

附件nginx配置文件:

upstream gtest {
server 127.0.0.1:81;
server 127.0.0.1:82;
}
server {
listen 80;
server_name test.abc.com;
location / {
proxy_pass http://gtest;
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_next_upstream http_502 http_504 error http_404 timeout invalid_header;
}
location /web-console/ {}
location /jmx-console/ {}
}
...全文
960 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
upstream gtest {
ip_hash;
server 127.0.0.1:81;
server 127.0.0.1:82;
} 楼上给出的ip_hash只是临时方案而且有弊端,详情有其他人分享 http://www.ttlsa.com/nginx/nginx-modules-nginx-sticky-module
ip_hash只是负载均衡权重的一种算法

我的建议:
1. 业务系统数据建议存库
2.web端负载均衡需要注意登陆cookie共享,存库即可,从而实现转发到每个server都能拿到一样的cookie
rumlee 2018-01-24
  • 打赏
  • 举报
回复
将配置 upstream gtest { server 127.0.0.1:81; server 127.0.0.1:82; } 修改成 upstream gtest { ip_hash; server 127.0.0.1:81; server 127.0.0.1:82; } 就可以了。 之所以出现这种问题的根源可能是你写入了一些数据在session中或者static对象中,而多台服务器之间没有实现session共享导致的。 我们一般对这种问题的处理是使用一台redis在多个tomcat之间实行session共享。
只想发财 2018-01-23
  • 打赏
  • 举报
回复
ip_hash。一个IP 只访问一个tomcat
sxl_88 2018-01-20
  • 打赏
  • 举报
回复
引用 1 楼 nwpulei 的回复:
1.相同请求打到 相同服务器上 数据会串吗? 如果1没有问题 看2 2.相同请求 经过ng 打到后端服务器,后端收到的请求相同吗? 按这两个点去排查
我测试了下,在Nginx配置文本中,注释掉其中一台Web服务器后再使用就没有任何问题,数据一切正常。请问怎么解决此问题。谢谢! Nginx配置注释如下,其它配置信息不变: upstream gtest { #server 127.0.0.1:81; server 127.0.0.1:82; }
nwpulei 2018-01-19
  • 打赏
  • 举报
回复
1.相同请求打到 相同服务器上 数据会串吗? 如果1没有问题 看2 2.相同请求 经过ng 打到后端服务器,后端收到的请求相同吗? 按这两个点去排查

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧