HAproxy采用粘滞会话吗?

HAProxy是咱们选用的世界一流的负载均衡器,每秒可处理250,000个链接及数万个请求。不只功能强大,并且经事实证实,它仍然很是灵活,有强大的记录及监控系统还有不少其它特色。浏览器

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

由于各类需求不一样,而不少人认为,粘滞是好的,因此,咱们的系统默认设置就是粘滞会话。HAProxy使用cookie来追踪用户或浏览器最后使用的后台服务器,若是有新的需求,将自动转给一样的后台服务器进行处理。cookie

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

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

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

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

所以,关闭cookies或会话后,实际的令牌循环或其它有用的方案如最小链接数才能生效,能够对请求进行均衡处理。咱们亲历过关闭这些cookie或会话后,系统稳定性提升了不少。性能

因此,如今只有当须要用到粘滞会话的时候,咱们才用,如Java系统或其它系统。除了这些特殊状况以外,咱们会让请求自由分配,以提升系统性能及稳定性。spa


(Authored by Steve Mushero / ChinaNetCloud CEO & CTO 本博客英文原文请点此查看
blog

相关文章
相关标签/搜索