找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 14381|回复: 21

[负载平衡] 基于目标地址的“负载平衡”

[复制链接]
发表于 2008-11-18 22:26:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
负载平衡为什么要加引号呢?除非汇聚,多WAN口多IP的只能说是较均衡的分流。不再围绕这个话题多费口水。
我以前做过多种负载平衡,下面介绍各种负载平衡的优缺点:
1、按源地址动态分流,这种方式最稳定,网银、森吧网、网游全部连接正常。缺点是某个源IP分到某WAN口,在地址列表有效期内只能固定使用那个WAN口中,也就是说一台电脑只能使用一个WAN口中。
2、按线程的分流,用NTH做mark-conn。这种方式充分发挥多WAN口带宽,在多线程下载时带宽成倍增长,下载速度很快。缺点是网银、部分网游、部分网站,需要重复验证的网络有时不能正常连接,而且WAN口越多成功率越低,成功率为1/n。
3、上述两种的结合。拥有第二种方式的优点,解决第二种方式的缺点。但你必须把那些网络的IP都记到地址列表,显然,我们知道的才能加上去,不知道的还有很多。
最后,想能好久,能不能按目标地址动态分流呢?答案是肯定的,只要把第一种方式的源地址改为目标地址就可以了,但这样还不行,这样做就不能正常远程用WINBOX访问了,下面说一下脚本。
/ip fir man
add chain=prerouting src-address=192.168.10.0/24 dst-address-list=ip1 action=mark-connection new-connection-mark=adsl-1 passthrough=yes
add chain=prerouting src-address=192.168.10.0/24 connection-mark=adsl-1 action=mark-routing new-routing-mark=net1 passthrough=no
add chain=prerouting src-address=192.168.10.0/24 dst-address-list=ip2 action=mark-connection new-connection-mark=adsl-2 passthrough=yes
add chain=prerouting src-address=192.168.10.0/24 connection-mark=adsl-2 action=mark-routing new-routing-mark=net2 passthrough=no
add chain=prerouting src-address=192.168.10.0/24 nth=1,0,0 action=add-dst-to-address-list address-list=ip1 address-list-timeout=20m
add chain=prerouting src-address=192.168.10.0/24 dst-address-list=ip1 action=mark-connection new-connection-mark=adsl-1 passthrough=yes
add chain=prerouting src-address=192.168.10.0/24 connection-mark=adsl-1 action=mark-routing new-routing-mark=net1 passthrough=no
add chain=prerouting src-address=192.168.10.0/24 nth=1,0,1 action=add-dst-to-address-list address-list=ip2 address-list-timeout=20m
add chain=prerouting src-address=192.168.10.0/24 dst-address-list=ip2 action=mark-connection new-connection-mark=adsl-2 passthrough=yes
add chain=prerouting src-address=192.168.10.0/24 connection-mark=adsl-2 action=mark-routing new-routing-mark=net2 passthrough=no
add chain=output src-address=116.30.141.41 action=mark-routing new-routing-mark=net1 passthrough=no comment="pppoe-out1"
add chain=output src-address=116.30.144.78 action=mark-routing new-routing-mark=net2 passthrough=no comment="pppoe-out2"
上面两个chain=output是解决远程访问问题,WAN1、WAN2都能访问。src-address就是相应WAN的IP。这个IP是改变的,通过负载平衡变路由IP的脚一起改,只要加句
/ip fir man set pppoe-out1 src-address=x.x.x.x就OK了。其它不说了,你果你不懂多WAN口负载平衡的话先看看其它资料,如果你懂的话应该看行明白的。

理论上最能发挥多WAN口带宽的是第二种按线程分流,这种方式带来的麻烦不好解决。实际应用中,按目标地址分流跟按线程分流效果也差不多。我现在用的就是按目标地址分流,至今没出现问题。

[ 本帖最后由 younger 于 2008-11-18 22:39 编辑 ]
routeros
发表于 2008-11-18 23:32:57 | 显示全部楼层
对于验证码和网银处理~~~~真是一个好的方式~
routeros
回复

使用道具 举报

发表于 2008-11-19 00:14:41 | 显示全部楼层
不错。真是一个好的主意。多谢了。
routeros
回复

使用道具 举报

发表于 2008-11-19 10:44:33 | 显示全部楼层
游戏有没有问题呢?目标地址列表20分钟后可能改变,线路也可能改变,游戏就可能断掉。
routeros
回复

使用道具 举报

发表于 2008-11-19 10:53:32 | 显示全部楼层
观望,不知道效果如何
routeros
回复

使用道具 举报

 楼主| 发表于 2008-11-19 11:07:16 | 显示全部楼层
20m不够可以加长。而且做了mark-connection ,做了mark-connection 后就算你把目标IP从地址列表移除也可以正常通讯。
还有一个方法就是在mark-connection 前加
add chain=prerouting  dst-address-list=ip1 action=add-dst-to-address-list address-list=ip1 address-list-timeout=20m
这样,除非你20分钟不与这个目标IP连接,一旦有通讯,再重置为20分钟。
routeros
回复

使用道具 举报

发表于 2008-11-19 14:16:37 | 显示全部楼层
曾做过第3种做法,但曾感觉ROS维护这么大个目标地址吃不消,特别是大些的网络,就放弃了。后来还是用了多网关的做法,但均衡能力弱于NTH.
routeros
回复

使用道具 举报

 楼主| 发表于 2008-11-19 20:07:07 | 显示全部楼层
多网关,我也做过,确实没有NTH均衡能力强。
多网关也会有问题。网银等一些网站有时也会不能正常使用。
routeros
回复

使用道具 举报

发表于 2008-11-19 22:30:41 | 显示全部楼层
多线均衡还是用random吧
routeros
回复

使用道具 举报

发表于 2008-11-20 10:30:57 | 显示全部楼层
挺好啊,有空试试
routeros
回复

使用道具 举报

发表于 2008-11-21 01:13:34 | 显示全部楼层
好东东
routeros
回复

使用道具 举报

发表于 2008-12-29 22:20:35 | 显示全部楼层
好东西,记号
routeros
回复

使用道具 举报

发表于 2008-12-29 23:50:13 | 显示全部楼层
说真的还没试过,理论上应该是行得通的,有机会试下
routeros
回复

使用道具 举报

发表于 2009-9-10 12:29:37 | 显示全部楼层
不错..应该是行得通..等会来试试
routeros
回复

使用道具 举报

发表于 2009-9-10 13:09:39 | 显示全部楼层
您好..能不能帮我写一个脚本...
2条4M动态ADSL...
网关192.168.2.1
地址源192.168.1.2-192.168.1.255
不需要远程访问ROS
谢谢了
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-12-23 12:09 , Processed in 0.059654 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表