通过多个接口循环调度

通过多个接口循环调度

我想在网络接口和特定 IP 之间进行选择。例如:

向 192.168.1.5 发出请求 // 使用接口 1

向 192.168.1.5 发出请求 // 使用接口 2

向 192.168.1.5 发出请求 // 使用接口 1

向 192.168.1.5 发出请求 // 使用接口 2

向 192.168.1.5 发出请求 // 使用接口 1

向 192.168.1.5 发出请求 // 使用接口 2

我正在使用 Ubuntu 10。我发现了这个:

http://www.go2linux.org/load-balance-traffic-for-two-isps-with-linux

这就是我要找的东西吗?

答案1

我在一台 Ubuntu 服务器上安装了这个,我将在下面发布配置。安装起来有点麻烦,而且仍然有一些问题,这台机器还提供 NAT(在另一个接口上),对于 NAT 客户端,当数据包来自不时变化的不同地址时,某些服务(openvpn、icq)会混淆。

无论如何: - 我已经用它来利用 2x 100 Mbps 互联网链接和两个公共 IP - 对 Apache 来说很好用 - 每个请求都在不同的接口上处理等等...但客户端的路由是固定的,所以每隔一段时间清除一次路由缓存是件好事(通过/sbin/route del default)- 但是当你这样做时 - 一些服务会变得混乱。(Openvpn 客户端需要在配置中添加“float”,这样他们就会信任具有多个地址的服务器等等...)。每个连接最多可以获得 100 Mbps,但 2 个连接可以达到 200 Mbps...

许多应用程序都很混乱,因此当您有机会使粘合工作时 - 您可以管理开关 - 我会推荐这种方法。

我的互联网接口:

eth0 链路封装:以太网 HWaddr 00:11:09:5e:af:af  
          inet 地址:69.42.248.102 广播:69.42.248.127 掩码:255.255.255.192

eth2 链路封装:以太网 HWaddr 00:0e:2e:0d:32:b4  
          inet 地址:69.42.248.103 Bcast:69.42.248.127 掩码:255.255.255.192

它们由 /etc/network/interfaces 中的默认设置配置

自动 eth0                                                                                                                       
iface eth0 inet 静态                                                                                                          
    地址 69.42.248.102                                                                                                      
    网络掩码 255.255.255.192                                                                                                     
    网关 69.42.248.65                                                                                                       

自动 eth2                                                                                                                       
iface eth2 inet 静态                                                                                                          
    地址 69.42.248.103                                                                                                      
    网络掩码 255.255.255.192                                                                                                     
    网关 69.42.248.65

最后,我通过启动后调用脚本来初始化负载平衡(添加到 rc.local(退出前)或 crontab)

/bin/bash #!/bin/bash

# 我不记得为什么这里会出现多次 - 但我默认设置了多个门和接口,所以我猜它在这里是为了清除它们全部 ;-)

/sbin/route 删除默认
/sbin/route 删除默认
/sbin/route 删除默认
/sbin/route 删除默认

ip route 添加默认范围全局 \                                                                                             
下一跳通过 69.42.248.65 dev eth0 权重 1 \                                                                                   
下一跳通过 69.42.248.65 dev eth2 权重 1    

这基本上告诉路由使用具有不同 ethX 和相同权重的相同门 - 从而执行循环每个连接的负载平衡。

答案2

答案3

我的 DNS 有点生疏,但如果我没记错的话,您不能只在 A 记录中输入两个 IP 地址,然后大多数系统会在这两个地址之间交替。当然,这假设您使用的是主机名而不是直接 IP。

相关内容