使用第7层或第4层进行负载平衡

时间:2012-05-09 13:47:25

标签: .net iis-7 iis-7.5 load-balancing

我很想知道应用负载均衡的Layer7或Layer4之间有什么不同。 其中一个更好吗? 我如何决定哪个更符合我的系统?

提前致谢...

2 个答案:

答案 0 :(得分:6)

我想这可能是一个非常强烈的讨论,无论如何它与编程无关但是......

它们之间的区别在于你在哪个(OSI层)进行平衡。在我看来,你应该从不仅在第7层进行平衡(那么你应该总是使用第4层)。

为什么呢?第7层负载平衡是好的,因为你不需要任何特殊的硬件,它是在应用程序级别完成的,但是你付出了很多其他的缺点:

  • 性能不太好:负载均衡器必须跟踪cookie和会话(如果需要),为此您需要更强大的硬件。正确的方法应该是让应用程序正确管理它。要覆盖它,你需要一个更强大的硬件。
  • 负载分布在服务器上,但 true 负载平衡并不容易。通常它只是在DNS服务器中注入的东西,然后它不知道服务器忙多少(想象你有一个密集和两个轻量级操作分派到两个服务器,循环可以分配一个密集和一个当最好的 将轻量级分配给同一服务器时,轻量级到同一服务器。)
  • 它们根本不具备可扩展性(它们必须管理您的应用程序应管理的内容),并且会浪费大量资源。

为什么他们好?它们可以是一个快速,简单,脏的解决方案来修补不可伸缩的应用程序(对于第4层平衡,您的ASP.NET应用程序应该可以自行扩展)。它们可能是解决偶然问题的临时解决方案,而不是解决方案。在现实世界中,第4层负载平衡是首选(有时与第7层平衡混合,例如Google使用第一级循环dns负载平衡)。

阅读这篇关于负载平衡的非常好的文章:http://1wt.eu/articles/2006_lb/index.html

我发现有趣的东西here(关于第7层负载平衡的优点)他们说:

  

虽然用例仍然相当有限,但第7层负载平衡的这种功能确实为将来的使用开辟了许多可能性。随着这项技术的发展,我们将能够更智能地平衡其他类型的流量。

如果用例(具有这些优势)是“仍然相当有限”,我们必须等待“随着这项技术的发展”然后我看不出任何理由仅在第7层上基于 NOW 任何负载平衡解决方案(此外,它在将来的任何时刻都很容易添加)。

答案 1 :(得分:3)

第4层负载均衡器对网络和传输层协议(IP,TCP,FTP,UDP)中的数据起作用。

第7层负载均衡器根据应用层协议(如HTTP)中的数据分发请求。它还可以根据http的特定参数中的HTTP标头,cookie或数据等特定数据分发请求。

  

因此第4层负载均衡器是tcp负载均衡器,而第7层负载均衡器是http负载均衡器。