nginx保持会话的方式

本文探讨了三种实现会话粘性的方法:ip_hash、sticky_cookie_insert和jvm_route。ip_hash简单但存在局域网负载失衡的问题;sticky_cookie_insert通过cookie避免了ip_hash的缺陷;jvm_route则通过session_cookie确保会话粘性,但在服务器故障时可能丢失会话。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)ip_hash

  简单易用,但是有如下缺点

  • 后端服务器宕机后,session会丢失
  • 来自同一局域网的客户端会被转发到同一个后端服务器,可能导致负载失衡
  • 不适用CDN网络,不适用于前段还有代理的情况

2)sticky_cookie_insert

  使用sticky_cookie_insert启用会话亲缘关系,这会导致来自同一客户端的请求被传递到一组服务器的同一台服务器;与ip_hash不同之处在于,他不是基于ip来判断客户端的,而是基于cookie来判断;因此可以避免上述ip_hash中来自同一局域网的客户端和前段代理导致负载失衡的情况。

  说明:

  • expires:设置浏览器中保持cookie的时间
  • domain:定义cookie的域
  • path:为cookie定义路径

3)jvm_route方式

  这个模块通过session_cookie的方式来获取session粘性。如果在cookie和url中并没有session,则这只是个简单的round-robin负载均衡。

  jvm_route的原理

  • 一开始请求过来,没有带session的信息,jvm_route就根据round robin的方法,发到一台Tomcat上面
  • Tomcat添加上session信息,并返回给客户
  • 用户再次请求,jvm_route看到session中有后端服务器的名称,他就把请求转到对应的服务器上

  暂时jvm_route模块还不支持fair的模式。jvm_route的工作模式和fair是冲突的。对于某个特定用户,当一直为他服务的Tomcat宕机后,默认情况下它会重试max_fails的次数,如果还是失败,就重新启用round robin的方式,而这种情况下就会导致用户的session丢失。

  jvm_route是通过session_cookie这种方式来实现session粘性,将特定会话附属到特定tomcat上,从而解决session不同步问题,但是无法解决宕机后会话转移问题。

转载于:https://www.cnblogs.com/qfdxxdr/p/7640000.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值