我是一名Web开发人员,最近需要使用Load Balancer。 我在这个领域是新的。 我select了使用哪个LB,不像它那么重要,HAProxy具有我所研究的所有function。
我担心的是,使用基于软件的负载均衡器,它不会将用户redirect到后端服务器,负载均衡器停留在中间,因此所有的带宽和TCP连接都将停留在中间。 我说得对吗?
如果以前是这样的话,那我该如何做一个解决scheme,使负载平衡器不会停留在Client – Backend服务器的中间?
此外,我需要一个“源”磅types,因为web应用程序使用会话,我需要用户连接到他们已经使用相同的服务器。
先谢谢你。
如果是client -> server ,或者server -> client ,那么不知道你的stream量大部分stream向哪个方向,但是如果是后者,你可能会感兴趣的是使用(或者至less检查) Linux虚拟服务器(LVS)这是
一个先进的负载平衡解决scheme,可用于构build高度可扩展和高度可用的networking服务,如可扩展的Web,caching,邮件,FTP,媒体和VoIP服务。
(摘自网站)
为了直接获得后端服务器的stream量,在客户端之间不需要“介于两者之间”,请使用直接路由 。 您可以在此链接中find更多信息,但是要了解这种情况的外观如何:
现在你可以说…好吧,这听起来不错,理论上看起来不错,但是网站上写着“最新新闻… 2012年8月8日星期三”…我们现在在2016年。 是的,你会完全正确的,除了LVS已经certificate和坚实的…我build议至less看看?
维基媒体基金会的确使用它 ,就像其他许多人一样,这里是2010年的最后一张图片。
在软件方面 – haproxy是很好的,经过validation的解决scheme。
有多种方法可以实现正确的负载平衡。
IP哈希平衡
根据您的源IP,目标服务器将使用源IP的散列进行计算。 因此,来自一个IP的所有请求将始终到达同一台服务器(除非它已closures)。
我在不能使用JWT的项目上使用这个选项。
Cookie标记
networking服务器或负载均衡器返回一个标记服务器的附加cookie,该服务器应该处理来自该用户的其他请求。
在服务器之间共享Cookie
我个人会避免这个选项,因为它会给你的基础设施带来复杂性,你必须关心会话存储。
JSON Web令牌(cookie中的会话)
因为它存储在cookie中,所以你完全不关心会话。 因此,无论服务器A还是服务器B,您的服务器都不能处理每个请求。至于我 – 这是大部分Web应用程序的最佳解决scheme,但! 这里有一个巨大的警告,因为你必须了解你所做的事情。
如果以前是这样的话,那我该如何做一个解决scheme,使负载平衡器不会停留在Client – Backend服务器的中间?
这也是可能的,你可以简单地使用子域名。 如果您的用户到达WWW,它决定用户redirect到s1.domain.tld或s2.domain.tld,…
过去我曾多次看过这个解决scheme,但是现代的应用程序不使用它。 它例如创build索引机器人的重复页面。
你也可以摆脱你的平衡器,并在networking层面上使用ECMP,但configuration比较复杂。 我个人会留在负载平衡器。