nginx负载均衡多台tomcat,session共享,session丢失
Windows下Nginx+Tomcat整合的安装与配置(一)【精】(分类里都值得一看)
start nginx //启动 nginx -t //测试nginx配置是否正确 nginx -s stop //结束nginx进程 nginx -s reload //重启nginx进程
一. 配置负载均衡
自己尝试的例子:
访问:
发现请求被根据权重weight分发到两个Tomcat中。其中一个Down掉后也会切换到另一个上。
注释掉可使用#号也可使用down:
upstream localhost2 { # server localhost:8080 weight=1; server localhost:28080 weight=2; } upstream localhost2 { server localhost:8080 down; server localhost:28080 weight=2; }
QC:
window下权重 weight设置为一样时,切换无法成功,原因未知
配置多个:
server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } } server { listen 80; server_name t.test.com; charset utf-8; access_log logs/hostzs.access.log; location / { proxy_pass http://127.0.0.1:9000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } server { listen 80; server_name www.test.com; charset utf-8; access_log logs/hostzs.access.log; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
二. 实现Session共享
多个tomcat要一起协同工作有几种办法,可以考虑的方案有以下几个:
1. 使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单。但这个方案的效率比较低,在大并发下表现并不好。
2. 利用nginx的基于访问ip的hash路由策略,保证访问的ip始终被路由到同一个tomcat上,这个配置更简单。但如果应用是某一个局域网大量用户同时登录,这样负载均衡就没什么作用了。
3. 利用memcached把多个tomcat的session集中管理,前端在利用nginx负载均衡和动静态资源分离,在兼顾系统水平扩展的同时又能保证较高的性能。