younger 发表于 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 编辑 ]

马甲 发表于 2008-11-18 23:32:57

对于验证码和网银处理~~~~真是一个好的方式~

billzhong 发表于 2008-11-19 00:14:41

不错。真是一个好的主意。多谢了。

木木 发表于 2008-11-19 10:44:33

游戏有没有问题呢?目标地址列表20分钟后可能改变,线路也可能改变,游戏就可能断掉。

9939781 发表于 2008-11-19 10:53:32

观望,不知道效果如何

younger 发表于 2008-11-19 11:07:16

20m不够可以加长。而且做了mark-connection ,做了mark-connection 后就算你把目标IP从地址列表移除也可以正常通讯。
还有一个方法就是在mark-connection 前加
add chain=preroutingdst-address-list=ip1 action=add-dst-to-address-list address-list=ip1 address-list-timeout=20m
这样,除非你20分钟不与这个目标IP连接,一旦有通讯,再重置为20分钟。

wwjun 发表于 2008-11-19 14:16:37

曾做过第3种做法,但曾感觉ROS维护这么大个目标地址吃不消,特别是大些的网络,就放弃了。后来还是用了多网关的做法,但均衡能力弱于NTH.

younger 发表于 2008-11-19 20:07:07

多网关,我也做过,确实没有NTH均衡能力强。
多网关也会有问题。网银等一些网站有时也会不能正常使用。

木木 发表于 2008-11-19 22:30:41

多线均衡还是用random吧

oke0 发表于 2008-11-20 10:30:57

挺好啊,有空试试

dhp 发表于 2008-11-21 01:13:34

好东东

pxyq 发表于 2008-12-29 22:20:35

好东西,记号

lixiong7758258 发表于 2008-12-29 23:50:13

说真的还没试过,理论上应该是行得通的,有机会试下

y_aspen 发表于 2009-9-10 12:29:37

不错..应该是行得通..等会来试试

y_aspen 发表于 2009-9-10 13:09:39

您好..能不能帮我写一个脚本...
2条4M动态ADSL...
网关192.168.2.1
地址源192.168.1.2-192.168.1.255
不需要远程访问ROS
谢谢了
页: [1] 2
查看完整版本: 基于目标地址的“负载平衡”