NTH负载均衡的断线切换讨论
做过NTH负载均衡的都知道,无论多少条接入做均衡,只要其中一条或多条线出故障,整个网络将瘫痪,为了保证整个网络的正常运行,必需有一个完整的切换脚本。以4条线接入为例,思路如下:1.减线均衡法
把剩下的线三条或二条线再重新做负载均衡,当线路恢复后,再做回4线均衡。但脚本太复杂还没想通,请高人.....发表
2.均衡转分流(包括IP分流和端口分流)
禁止现在的/ ip firewall nat / ip firewall mangle 均衡设置,启用里面预先设置好的分流方式。当检测到线路恢复后,再禁用分流,转为均衡。 不知道 不会做均衡,如果会做了理解了,切换脚本应该能做出来的 以你的智慧还不会做这个,不信哦!
下面这个是我做的
http://bbs.routerclub.com/thread-32986-1-2.html 呵呵,前段时间帮别人做了个4线均衡,完整考虑到了其中某一线或某几线断开时的调整,以下是检测调整的脚本
:global ip
:global gateold
:global address
:global ii 0
/interface pppoe-client monitor pppoe-out1 once do={:global adsl-statu $status}
:if ($adsl-statu="connected") do={
:set ip address]
:set address [:pick $ip 0 [:find $ip "/"]]
:set gateold gateway]
:if ($gateold!=$address) do={
/ip add set address=$ipnetwork=$address broadcast=$address
/ip route set gateway=$address
}
:set ii ($ii+1)
}
/interface pppoe-client monitor pppoe-out2 once do={:global adsl-statu $status}
:if ($adsl-statu="connected") do={
:set ip address]
:set address [:pick $ip 0 [:find $ip "/"]]
:set gateold gateway]
:if ($gateold!=$address) do={
/ip add set address=$ipnetwork=$address broadcast=$address
/ip route set gateway=$address
}
:set ii ($ii+1)
}
/interface pppoe-client monitor pppoe-out3 once do={:global adsl-statu $status}
:if ($adsl-statu="connected") do={
:set ip address]
:set address [:pick $ip 0 [:find $ip "/"]]
:set gateold gateway]
:if ($gateold!=$address) do={
/ip add set address=$ipnetwork=$address broadcast=$address
/ip route set gateway=$address
}
:set ii ($ii+1)
}
/interface pppoe-client monitor pppoe-out4 once do={:global adsl-statu $status}
:if ($adsl-statu="connected") do={
:set ip address]
:set address [:pick $ip 0 [:find $ip "/"]]
:set gateold gateway]
:if ($gateold!=$address) do={
/ip add set address=$ipnetwork=$address broadcast=$address
/ip route set gateway=$address
}
:set ii ($ii+1)
}
:if ($ii=2) do={
:if ( disabled]=yes) do={/ip fi man en }
:if ( disabled]=yes) do={/ip fi man en }
:if ( disabled]=no) do={/ip fi man dis }
:if ( disabled]=no) do={/ip fi man dis }
:if ( nth]!=1,1,0) do={/ip fi man set nth=1,1,0}
:if ( nth]!=1,1,1) do={/ip fi man set nth=1,1,1}
}
:if ($ii=3) do={
:if ( disabled]=yes) do={/ip fi man en }
:if ( disabled]=yes) do={/ip fi man en }
:if ( disabled]=yes) do={/ip fi man en }
:if ( disabled]=no) do={/ip fi man dis }
:if ( nth]!=2,3,0) do={/ip fi man set nth=2,3,0}
:if ( nth]!=2,3,1) do={/ip fi man set nth=2,3,1}
:if ( nth]!=2,3,2) do={/ip fi man set nth=2,3,2}
}
:if ($ii=4) do={
:if ( disabled]=yes) do={/ip fi man en }
:if ( disabled]=yes) do={/ip fi man en }
:if ( disabled]=yes) do={/ip fi man en }
:if ( disabled]=yes) do={/ip fi man en }
:if ( nth]!=3,4,0) do={/ip fi man set nth=3,4,0}
:if ( nth]!=3,4,1) do={/ip fi man set nth=3,4,1}
:if ( nth]!=3,4,2) do={/ip fi man set nth=3,4,2}
:if ( nth]!=3,4,3) do={/ip fi man set nth=3,4,3}
}
脚本可能有冗余,但是运行半个月表现良好。
[ 本帖最后由 171594765 于 2008-8-13 14:44 编辑 ] 路由表的调整就不贴出来了,呵呵~~ 不错,略看一下能够根据正常的线路来调整均衡,有空拷来试试。 :if() do={
在这里写ADSL运行时要执行的脚本
} else={
在这里写ADSL断开时要执行的脚本
}
pppoe-out1是ADSL的接口名
用这个就解决了 NTH是什么意思? 原帖由 ee007 于 2008-8-19 02:44 发表 http://bbs.routerclub.com/images/common/back.gif
:if() do={
在这里写ADSL运行时要执行的脚本
} else={
在这里写ADSL断开时要执行的脚本
}
pppoe-out1是ADSL的接口名
用这个就解决了
多线路就没这么简单了。比如原来A状态,是1.2.3.4线正常的,工作在NTH下;现在3出问题,要把1.2.4改为NTH工作,3恢复后返回A状态等等。 /ip fir man 启停里面的规则就是! 我的ADSL很稳定,不需要这东西.呵呵. 我的ADSL很稳定,不需要这东西.呵呵.
我的ADSL很稳定,不需要这东西.呵呵.
我的ADSL很稳定,不需要这东西.呵呵.回复 5# 的帖子
我不熟悉ROS的脚本,不过看程序流程这个脚本好像还是有问题的,他假设的掉线似乎是comm=ADSL4-ADSL1递减按顺序掉线,这在实际运行中似乎是不太可能的。
页:
[1]
2