nginx轮询方式

ip_hash(不推荐使用)

nginx中的ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session,ip_hash是在upstream配置中定义的

upstream backend { 
    server 127.0.0.1:8080 ; 
    server 127.0.0.1:9090 ; 
    ip_hash; 
    }

不适用的理由:

1、如果nginx不是最前端服务器。

2、nginx后端还有其他方式的负载均衡

3、对于有的公司又多个外网IP时,每次获取的IP可能都不一样

nginx_upstream_jvm_route

nginx_upstream_jvm_route是一个nginx的扩展模块,用来实现基于Cookie的SessionSticky的功能。

简单来说,它是基于cookie中的JSESSIONID来决定将请求发送给后端的哪个server,nginx_upstream_jvm_route会在用户第一次请求后端server时,将响应的server标识绑定到cookie中的JSESSIONID中,从而当用户发起下一次请求时,nginx会根据JSESSIONID来决定由哪个后端server来处理

upstream  tomcats_jvm_route
        {
             # ip_hash; 
              server   192.168.33.10:8090 srun_id=tomcat01; 
              server   192.168.33.11:8090 srun_id=tomcat02;
              jvm_route $cookie_JSESSIONID|sessionid reverse;
        }

测试

启动tomcat和nginx,访问nginx代理,使用Google浏览器,F12,查看cookie中的JSESSIONID,

形如:ABCD123456OIUH897SDFSDF.tomcat01,刷新也不会变化

相关推荐