另一个目的是将此Load Balancer作为内核模块(如LVS,Linux的本机负载平衡器),并使另一个用户空间管理应用程序进行配置。
但我有很多疑惑,
执行此负载均衡器的唯一方法是使用内核模块吗?它不能只是一个用户空间计划?
它不能在第3层(IP)?我在哪里接收IP数据包并处理所有逻辑?
请帮助我解决这些疑问,在项目开始时指导我很重要。
答案 0 :(得分:0)
在谈论实现内核模块时,我会非常技术性的。你在TCP层说“转发包”。但后来你说“听所有端口转发包”。因此,为了首先实现这一点,您需要了解差异:
“转发软件包”在TCP级别,意味着Linux应该能够拦截和转发软件包(基本上是做NAT),实现这一目标的唯一方法是使用{ {3}}就像iptables
和LVS一样(它不会监听到任何端口)。 iptables
是一个允许您配置Linux内核防火墙提供的表的应用程序,它使用netfilter的钩子。所以,是的,它不能是用户空间程序,除非你的意思是使用iptables
来配置NAT的前端,但我不认为这是重点。
“侦听所有端口并转发软件包”意味着您的负载均衡器将在应用层4上运行,可能您需要的是TCP代理。 TCP代理应用程序在用户空间上运行,您可以实现它以侦听一组端口,然后转发进出/返回到另一个端口的内容,如netfilters和HAProxy。
Balance非常简单和开源,因此它是一个很好的起点。
除了第4层和第7层外,第2层还有网络负载平衡(链路聚合,端口聚合,以太网通道或千兆位通道端口捆绑),第3层如lnlb
编辑:Cisco Express Forwarding的工作方式不同。 nftables
是新的通用内核数据包分类引擎的用户空间部分。 “nftables
将一个简单的虚拟机添加到Linux内核中,该内核能够检查网络数据包并决定如何处理该数据包”。