HAproxy采用粘滞会话吗?

HAProxy是我们选用的世界一流的负载均衡器,每秒可处理250,000个连接及数万个请求。不仅功能强大,而且经事实证明,它仍然非常灵活,有强大的记录及监控系统还有很多其它特点。

但是,同其它许多负载均衡器相同的是,HAproxy的主要特点也是:粘滞会话。这一功能很有用,甚至对于某些系统来说,是必须的,如某些系统的网络服务器会话是不可移动的,即不可在网络服务器之间随机移动会话。许多PHP系统不使用此功能,因为它们使用Memcache来存储会话。但是基于Java的系统通常采用此功能,因为很多数据是存在本地每台应用服务器的内存中。

因为各种需求不同,而很多人认为,粘滞是好的,所以,我们的系统默认设置就是粘滞会话。HAProxy使用cookie来追踪用户或浏览器最后使用的后台服务器,如果有新的需求,将自动转给同样的后台服务器进行处理。

虽然看起来这一系统功能工作简单,但是有时候是会遇到问题的,事实上,最近发生的一系列问题,使我们重新思考是否应该把粘滞会话设置为默认状态,是否对于某些服务,尤其是对于大型的繁忙系统,我们可以关闭这一功能吗?

尽管从理论上来说,一切应该不会出错,但是在系统高负载时的动态行为可能导致系统不稳定。我们见到过这样一个案例,当后台服务器已经超负荷的时候,负载均衡器仍然把需求调度到这一服务器,直至服务器瘫痪,而事实上,负载均衡器应该把用户需求调度到其他服务器上进行处理。

这是因为cookie要求这样做,所以才发生此操作。尽管HAProxy有负载均衡分配方法即令牌循环分配法,但要弄清楚一点:这种方法只是在没有cookie的情况下才会进行请求分配。当存在cookie的时候,会分配给同一台后台服务器,直至服务器瘫痪。然后,cookie和负载再转至下一台服务器,导致下一台服务器超负载。

这会带来很多系统不稳定问题,当超负载时,负载会在系统间不断跳动。结果就是,对于每秒处理上千请求的繁忙系统来说,要想关闭它或排除其故障,真的是很困难的。

因此,关闭cookies或会话后,实际的令牌循环或其它有用的方案如最小连接数才能生效,可以对请求进行均衡处理。我们亲历过关闭这些cookie或会话后,系统稳定性提高了很多。

所以,现在只有当需要用到粘滞会话的时候,我们才用,如Java系统或其它系统。除了这些特殊情况之外,我们会让请求自由分配,以提高系统性能及稳定性。

 

                 (Authored by Steve Mushero / ChinaNetCloud CEO & CTO  本博客英文原文请点此查看
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值