雙線負(fù)載均衡設(shè)置完整版
在我們遇到雙線網(wǎng)絡(luò)的時(shí)候,該如何進(jìn)行負(fù)載均衡的設(shè)置呢?這個問題我們將通過一個實(shí)際的案例幫助大家介紹,那么我們還是先從例子的實(shí)際情況出發(fā),根據(jù)問題的所在進(jìn)行方案的研究,之后通過前面文章的基礎(chǔ)介紹,在此我們就直接引入雙線負(fù)載均衡的配置問題了。
該公司有兩條專線,一條聯(lián)通的2M 租線,另一條互聯(lián)通的512K 租線;有一臺Linux 做的WEB服務(wù)器,該WEB服務(wù)器有一張網(wǎng)卡,接到中心交換機(jī)3560上。公司希望,當(dāng)兩條線路都正常時(shí),客戶能夠通過任何一條專線訪問公司的WEB服務(wù)器,實(shí)現(xiàn)雙線負(fù)載均衡;而且,當(dāng)任何一條線路出現(xiàn)故障時(shí),用戶仍然可以訪問WEB服務(wù)器。
分析:為了實(shí)現(xiàn)兩條線路正常時(shí)的雙線負(fù)載均衡,可以通過配置DNS輪詢實(shí)現(xiàn)。而為了實(shí)現(xiàn)容錯,我們需要實(shí)現(xiàn) 從哪條線路進(jìn)來的請求,其響應(yīng)也從該線路出去,這是解決問題的關(guān)鍵所在。因?yàn)?如果從一條線路進(jìn)去的請求,其響應(yīng)從另外一條線路出來的話,那么TCP的三次握手不可能完成,TCP連接不可能建立起來(因?yàn)閮蓷l線路上都有防火墻)。而且,即使不考慮防火墻的狀態(tài)檢測機(jī)制,假設(shè)兩條線路都正常時(shí)TCP連接能夠建立起來,但是,一旦其中一條線路掛了,那么連接也不可能建立得起來,容錯機(jī)制也不能實(shí)現(xiàn)。
DNS輪詢,比較簡單,我們不做深入的討論。由于該公司的域名是在域名供應(yīng)商那里注冊的,所有只需要在域名供應(yīng)商的網(wǎng)站上做適當(dāng)配置:將該公司的WEB服務(wù)器域名 www.xxx.com.cn 分別映射到IP地址 x.x.x.x(聯(lián)通IP) 和 y.y.y.y(互聯(lián)通IP)就完事了。當(dāng)用戶瀏覽www.xxx.com.cn的時(shí)候,瀏覽器會智能地在這兩個IP之間作出選擇。
下面我們討論怎樣實(shí)現(xiàn)雙線負(fù)載均衡。從哪條線路進(jìn)來的請求,其響應(yīng)也從該線路出去。我們可以這樣來做:
雙線負(fù)載均衡第一步:
在聯(lián)通線路的防火墻上,將聯(lián)通給我們的IP地址x.x.x.x 的80端口映射到內(nèi)網(wǎng)地址 192.168.168.1的80端口:
iptables -t nat -A PREROUTING -p tcp -s 0/0 -d x.x.x.x/32 \
--dport 80 -j DNAT --to-destination 192.168.168.1
iptables -t nat -A POSTROUTING -p tcp -s 192.168.168.1/32 -d 0/0 \
--sport 80 -j SNAT --to-source x.x.x.x
雙線負(fù)載均衡第二步:
在互聯(lián)通線路的防火墻上,將互聯(lián)通給我們的IP地址y.y.y.y 的80端口映射到內(nèi)網(wǎng)地址 192.168.1.2的80端口:
iptables -t nat -A PREROUTING -p tcp -s 0/0 -d y.y.y.y/32 \
--dport 80 -j DNAT --to-destination 192.168.168.2
iptables -t nat -A POSTROUTING -p tcp -s 192.168.168.2/32 -d 0/0 \
--sport 80 -j SNAT --to-source y.y.y.y
雙線負(fù)載均衡第三步:
在WEB服務(wù)器上,為網(wǎng)卡eth0綁定兩個IP地址:192.168.168.1,192.168.168.2:#p#
[root@web network-scripts]# cat ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:76:23:23:9A
IPADDR=192.168.168.1
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
[root@web network-scripts]# cat ifcfg-eth0:0
DEVICE=eth0:0
HWADDR=00:0C:76:23:23:9A
IPADDR=192.168.168.2
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
雙線負(fù)載均衡第四步:
在WEB服務(wù)器上配置策略路由:將來自聯(lián)通線路的,發(fā)給192.168.168.1的請求的響應(yīng)包,發(fā)送給192.168.168.11,然后通過聯(lián)通的線路,返回給用戶;將來自互連通線路的,發(fā)給192.168.168.2的請求的響應(yīng)包,發(fā)給192.168.168.12,然后通過互聯(lián)通的線路返回給用戶.這樣,就可以實(shí)現(xiàn) 從哪條線路進(jìn)來的請求,其響應(yīng)也從該線路出去。 具體配置如下:
[root@web ~]# ip route add table 1 default via 192.168.168.11
[root@web ~]# ip route add table 2 default via 192.168. 168.12
[root@web ~]# ip rule add from 192.168.168.1 table 1
[root@web ~]# ip rule add from 192.168.168.2 table 2
[root@web ~]# sh ip rule<--- IOS^-^
/sbin/ip: /sbin/ip: cannot execute binary file
[root@web ~]# ip rule list0:from all lookup local
32764:from 192.168.168.2 lookup 2
32765:from 192.168.168.1 lookup 1
32766:from all lookup main
32767:from all lookup default
[root@web ~]# ip route list table 1
default via 192.168.168.11 dev eth0
[root@web ~]# ip route list table 2
default via 192.168.168.12 dev eth0