易實(shí)現(xiàn)的ISP負(fù)載平衡設(shè)置
很多朋友都會(huì)發(fā)現(xiàn),我們的一些列關(guān)于負(fù)載平衡的文章都是比較專業(yè)的。一般不學(xué)習(xí)技術(shù)的人感覺都用不上負(fù)載平衡這個(gè)技術(shù)。但是,最簡(jiǎn)單的,我們?cè)诩依锩婵梢詫?duì)我們的寬帶網(wǎng)絡(luò)進(jìn)行負(fù)載平衡設(shè)置。這也是最容易理解和調(diào)控的一種負(fù)載平衡技術(shù)實(shí)現(xiàn)。那么現(xiàn)在我們就為大家演示一下如何進(jìn)行ISP負(fù)載平衡的設(shè)置。
將兩個(gè)ISP綁定,并做負(fù)載平衡,可以實(shí)現(xiàn)帶寬加倍。 也就是說,假如我們有兩條ADSL包月線路,可以使帶寬變?yōu)?M!
做這個(gè)工作,涉及到兩個(gè)工作
1、流量分割
首先是如何保證:回應(yīng)來自某一個(gè)ISP的數(shù)據(jù)包時(shí),仍然使用相同的ISP。 讓我們先定義一些符號(hào)。
令第一塊網(wǎng)卡的名字叫 $IF1,而第二塊網(wǎng)卡叫做 $IF2 。
然后設(shè)置 $IF1 的IP地址為 $IP1,$IF2 的IP地址為 $IP2。
并且,令I(lǐng)SP1 的網(wǎng)關(guān)地址為 $P1,ISP2 的網(wǎng)關(guān)地址為 $P2。
最后,令$P1的網(wǎng)絡(luò)地址為 $P1_NET ,令$P2的網(wǎng)絡(luò)地址為 $P2_NET。
額外創(chuàng)建兩個(gè)路由表, T1 和 T2。 加入到 /etc/iproute2/rt_tables 中。
然后如下設(shè)置兩個(gè)路由表中的路由:
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
沒什么大不了的,不過是建立了通向該網(wǎng)關(guān)的一條路由,并使之成為默認(rèn)網(wǎng)關(guān),分別負(fù)責(zé)一個(gè)單獨(dú)的上行流,并且為這兩個(gè)ISP都作這樣的配置。
要指出的是,那條網(wǎng)絡(luò)路由是必要條件,因?yàn)樗軌蜃屛覀冋业侥莻€(gè)子網(wǎng)內(nèi)的主機(jī),也包括上述那臺(tái)網(wǎng)關(guān)。
下一步,我們?cè)O(shè)置“main"路由表。把包通過網(wǎng)卡直接路由到與網(wǎng)卡相連的局域網(wǎng)上不失為一個(gè)好辦法。要注意“src" 參數(shù),他們能夠保證選擇正確的出口IP地址。
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
然后,設(shè)置你的缺省路由:
ip route add default via $P1
接著,設(shè)置路由規(guī)則。這實(shí)際上在選擇用什么路由表進(jìn)行路由。你需要確認(rèn)當(dāng)你從一個(gè)給定接口路由出數(shù)據(jù)包時(shí),是否已經(jīng)有了相應(yīng)的源地址:你需要保證的就是如果你已經(jīng)有了相應(yīng)的源地址,就應(yīng)該把數(shù)據(jù)包從相應(yīng)的網(wǎng)卡路由出去:
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
以上命令保證了所有的回應(yīng)數(shù)據(jù)都會(huì)從他們來的那塊網(wǎng)卡原路返回。 現(xiàn)在,完成了非常基本的配置。這將對(duì)于所有運(yùn)行在路由器上所有的進(jìn)程起作用,實(shí)現(xiàn)IP偽裝以后,對(duì)本地局域網(wǎng)也將起作用。如果不進(jìn)行偽裝,那么你要么擁有兩個(gè)ISP的地址空間,要么你想對(duì)兩個(gè)ISP中的一個(gè)進(jìn)行偽裝。無論哪種情況,你都要添加規(guī)則,基于發(fā)包的主機(jī)在局域網(wǎng)內(nèi)的IP地址,選擇從哪個(gè)ISP路由出去。
2、負(fù)載平衡
第二個(gè)問題是如何對(duì)于通過兩個(gè)ISP流出的數(shù)據(jù)進(jìn)行負(fù)載平衡。
如果你已經(jīng)成功地實(shí)現(xiàn)了流量分割,這件事并不難。
與選擇兩個(gè)ISP中的一個(gè)作為缺省路由不同,這次是設(shè)置缺省路由為多路路由。
在缺省內(nèi)核中,這會(huì)均衡兩個(gè)ISP的路由。
象下面這樣做(基于前面的流量分割實(shí)驗(yàn)):
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1
這樣就可以均衡兩個(gè)ISP的路由。通過調(diào)整“weight"參數(shù)我們可以指定其中一個(gè)ISP的優(yōu)先權(quán)高于另一個(gè)。
應(yīng)該指出,由于均衡是基于路由進(jìn)行的,而路由是經(jīng)過緩沖的,所以這樣的均衡并不是100%精確。也就是說,對(duì)于一個(gè)經(jīng)常訪問的站點(diǎn),總是會(huì)使用同一個(gè)ISP。