![LVS 与 HAProxy,我应该选择哪一个?](https://linux22.com/image/522346/LVS%20%E4%B8%8E%20HAProxy%EF%BC%8C%E6%88%91%E5%BA%94%E8%AF%A5%E9%80%89%E6%8B%A9%E5%93%AA%E4%B8%80%E4%B8%AA%EF%BC%9F.png)
我正在寻找一种负载平衡和故障转移策略解决方案,主要针对大型 Web 应用程序。我们有许多服务需要平衡,例如 Web、MySQL 和许多其他基于 HTTP 或 TCP 的服务。但我不确定它们的优缺点是什么,以及我应该选择哪一个。
答案1
这两个解决方案(LVS、HAproxy)最重要的区别在于,一个工作在第 4 层(LVS),另一个工作在第 7 层(HAproxy)。请注意,这些层引用来自 OSI 网络模型。
如果您理解了这一点,那么您将能够在正确的地方使用它。例如:如果您需要仅根据连接数进行平衡(假设),则第 4 层负载平衡器就足够了;另一方面,如果您想根据 HTTP 响应时间进行负载平衡,则需要更高层级的 LB。
使用更高级别 LB 的缺点是需要资源(对于相同数量的流量)。优点是显而易见的 - 想想“数据包级别检查”、“协议路由”等 - 事情远比简单的“数据包路由”复杂得多。
我要强调的最后一点是,HAproxy 是用户空间(认为“定制/调整起来更容易”,但速度较慢(性能)),而 LVS 是内核空间(认为“速度极快”,但与内核一样严格)。另外,不要忘记“升级 LVS 可能意味着内核更改 - 因此,需要重新启动”...
总之,使用正确的工具来完成正确的工作。
答案2
您应该同时使用两者:HAProxy 是出色的负载均衡器,而 LVS 是用于故障转移并避免单点故障的解决方案。