最终的本科项目“负载平衡服务器”?

时间:2014-02-25 21:05:41

标签: networking linux-kernel load-balancing distributed

今年我将开始我的最终非学生项目,基本上我将为Linux实现一个简单的基于服务器的负载均衡器。目的是使其在OSI第4层(TCP)上独立于应用程序(Web服务器,FTP服务器,电子邮件服务器等)。负载均衡器需要监听所有端口并将软件包转发到配置的真实服务器,并转发到其各自请求的端口(遵循循环法等算法)。

另一个目的是将此Load Balancer作为内核模块(如LVS,Linux的本机负载平衡器),并使另一个用户空间管理应用程序进行配置。

但我有很多疑惑, 执行此负载均衡器的唯一方法是使用内核模块吗?它不能只是一个用户空间计划?
它不能在第3层(IP)?我在哪里接收IP数据包并处理所有逻辑?

请帮助我解决这些疑问,在项目开始时指导我很重要。

1 个答案:

答案 0 :(得分:0)

在谈论实现内核模块时,我会非常技术性的。你在TCP层说“转发包”。但后来你说“听所有端口转发包”。因此,为了首先实现这一点,您需要了解差异:

  • “转发软件包”在TCP级别,意味着Linux应该能够拦截和转发软件包(基本上是做NAT),实现这一目标的唯一方法是使用{ {3}}就像iptables和LVS一样(它不会监听到任何端口)。 iptables是一个允许您配置Linux内核防火墙提供的表的应用程序,它使用netfilter的钩子。所以,是的,它不能是用户空间程序,除非你的意思是使用iptables来配置NAT的前端,但我不认为这是重点。

  • “侦听所有端口并转发软件包”意味着您的负载均衡器将在应用层4上运行,可能您需要的是TCP代理。 TCP代理应用程序在用户空间上运行,您可以实现它以侦听一组端口,然后转发进出/返回到另一个端口的内容,如netfiltersHAProxy

Balance非常简单和开源,因此它是一个很好的起点。

Balancel3dsr也是很好的参考。

除了第4层和第7层外,第2层还有网络负载平衡(链路聚合,端口聚合,以太网通道或千兆位通道端口捆绑),第3层如lnlb

编辑:Cisco Express Forwarding的工作方式不同。 nftables是新的通用内核数据包分类引擎的用户空间部分。 “nftables将一个简单的虚拟机添加到Linux内核中,该内核能够检查网络数据包并决定如何处理该数据包”。