扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
本文主要介绍了ISP的负载平衡的操作过程。我们需要了解IP的设置和路由表中的内容。那么就快来看看文章学习一下如何进行调制吧。望大家都能学会。
很多朋友都会发现,我们的一些列关于负载平衡的文章都是比较专业的。一般不学习技术的人感觉都用不上负载平衡这个技术。但是,最简单的,我们在家里面可以对我们的宽带网络进行负载平衡设置。这也是最容易理解和调控的一种负载平衡技术实现。那么现在我们就为大家演示一下如何进行ISP负载平衡的设置。
将两个ISP绑定,并做负载平衡,可以实现带宽加倍? 也就是说,假如我们有两条ADSL包月线路,可以使带宽变为1M!
做这个工作,涉及到两个工作
1?流量分割
首先是如何保证:回应来自某一个ISP的数据包时,仍然使用相同的ISP? 让我们先定义一些符号?
令第一块网卡的名字叫 $IF1,而第二块网卡叫做 $IF2 ?
然后设置 $IF1 的IP地址为 $IP1,$IF2 的IP地址为 $IP2?
并且,令ISP1 的网关地址为 $P1,ISP2 的网关地址为 $P2?
最后,令$P1的网络地址为 $P1_NET ,令$P2的网络地址为 $P2_NET?
额外创建两个路由表, T1 和 T2? 加入到 /etc/iproute2/rt_tables 中?
然后如下设置两个路由表中的路由:
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2
没什么大不了的,不过是建立了通向该网关的一条路由,并使之成为默认网关,分别负责一个单独的上行流,并且为这两个ISP都作这样的配置?
要指出的是,那条网络路由是必要条件,因为它能够让我们找到那个子网内的主机,也包括上述那台网关?
下一步,我们设置“main"路由表?把包通过网卡直接路由到与网卡相连的局域网上不失为一个好办法?要注意“src" 参数,他们能够保证选择正确的出口IP地址?
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
然后,设置你的缺省路由:
ip route add default via $P1
接着,设置路由规则?这实际上在选择用什么路由表进行路由?你需要确认当你从一个给定接口路由出数据包时,是否已经有了相应的源地址:你需要保证的就是如果你已经有了相应的源地址,就应该把数据包从相应的网卡路由出去:
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
以上命令保证了所有的回应数据都会从他们来的那块网卡原路返回? 现在,完成了非常基本的配置?这将对于所有运行在路由器上所有的进程起作用,实现IP伪装以后,对本地局域网也将起作用?如果不进行伪装,那么你要么拥有两个ISP的地址空间,要么你想对两个ISP中的一个进行伪装?无论哪种情况,你都要添加规则,基于发包的主机在局域网内的IP地址,选择从哪个ISP路由出去?
2?负载平衡
第二个问题是如何对于通过两个ISP流出的数据进行负载平衡?
如果你已经成功地实现了流量分割,这件事并不难?
与选择两个ISP中的一个作为缺省路由不同,这次是设置缺省路由为多路路由?
在缺省内核中,这会均衡两个ISP的路由?
象下面这样做(基于前面的流量分割实验):
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1
这样就可以均衡两个ISP的路由?通过调整“weight"参数我们可以指定其中一个ISP的优先权高于另一个?
应该指出,由于均衡是基于路由进行的,而路由是经过缓冲的,所以这样的均衡并不是100%精确?也就是说,对于一个经常访问的站点,总是会使用同一个ISP?
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者