LVS + HA代理,用于L4到L7负载平衡

目前我们正在使用HA代理来满足我们的负载平衡需求。 我们正在计划将LVS与HA代理集成起来,以创build一个负载平衡解决scheme,可以负责L4到L7负载均衡和HA。

去LVS的原因是

  1. 更好的L4支持长期的TCP会话
  2. 直接服务器返回(在HA代理中不可能)
  3. 在活动负载平衡器closures时故障切换现有连接。

现在,使用HA Proxy,备份负载均衡器只负责将新会话负载平衡到后端服务器,并且由主动负载平衡器服务的现有连接丢失。 我们希望,因为LVS在内核空间中运行,所以即使对于现有的会话,也可以进行故障切换。

这里有人使用LVS和HA代理相结合吗?

如果是这样的话,请您提供一些关于如何整合两者的指针 – 如果所有的数据包都被LVS接收,然后L7请求被发送到HA代理服务器?

我推出了混合IPVS / HAProxy设置。 HAProxy被用来做一些相当重的L7决策,因此有必要在相对较低的交通量上进行扩展。 将IPVS放在前面,可以实现HAProxy节点的扩展,并消除了在该层pipe理故障转移的需求。 它运行良好,为我需要的具体使用情况。

我不会推荐这个设置为您的陈述的情况。 通过混合使用,您将首先消除IPVS的原因,因为只要HAProxy在堆栈中,它就会像现在一样运行。 由于TCP连接仍然通过一个HAProxy实例,所以HAProxy在长时间的TCP连接中遇到的任何问题仍然存在(因为TCP连接仍然通过一个HAProxy实例),所以只能通过HAProxy盒子向Internet发送DSR,并且当HAProxy盒子掉下来了,你仍然会失去那个实例的所有连接。

如果您不需要HAProxy提供的特定function(L7智能),那么只需使用IPVS(为了您所说的好处)。 如果您确实需要HAProxy提供的特定function,请使用它代替IPVS。 是的,这是一个权衡。 您需要决定哪一个更重要,哪些缺失的function可以更轻松地进行devise(例如,通过将一些智能移动到后端,或者更好地处理丢弃的连接并重新build立用户可见的影响)。

只有当您需要HAProxy的function时,您需要扩展HAProxy,因为您有一个单个HAProxy框无法工作的情况,而只有一个IPVS DSR框,您应该结合使用这两个function。