關於兩條鏈路實現負載均衡和容錯的設計

2021-09-21 11:38:23 字數 2438 閱讀 5868

某公司的網路如下圖所示:

該公司有兩條專線,一條聯通的2m 租線,另一條互聯通的512k 租線;有一台linux 做的web伺服器,該web伺服器有一張網絡卡,接到中心交換機3560上。公司希望,當兩條線路都正常時,客戶能夠通過任何一條專線訪問公司的web伺服器,實現負載均衡;而且,當任何一條線路出現故障時,使用者仍然可以訪問web伺服器。

分析:為了實現兩條線路正常時的負載均衡,可以通過配置dns輪詢實現。而為了實現容錯,我們需要實現 從哪條線路進來的請求,其響應也從該線路出去,這是解決問題的關鍵所在。因為,如果從一條線路進去的請求,其響應從另外一條線路出來的話,那麼tcp的三次握手不可能完成,tcp連線不可能建立起來(因為兩條線路上都有防火牆)。而且,即使不考慮防火牆的狀態檢測機制,假設兩條線路都正常時tcp連線能夠建立起來,但是,一旦其中一條線路掛了,那麼連線也不可能建立得起來,容錯機制也不能實現。

dns輪詢,比較簡單,我們不做深入的討論。由於該公司的網域名稱是在網域名稱**商那裡註冊的,所有只需要在網域名稱**商的**上做適當配置:將該公司的web伺服器網域名稱 [url]www.***.com.cn[/url] 分別對映到ip位址 x.x.x.x(聯通ip) 和 y.y.y.y(互聯通ip)就完事了。當使用者瀏覽[url]www.***.com.cn[/url]的時候,瀏覽器會智慧型地在這兩個ip之間作出選擇。

下面我們討論怎樣實現 從哪條線路進來的請求,其響應也從該線路出去。

我們可以這樣來做:

第一步:在聯通線路的防火牆上,將聯通給我們的ip位址x.x.x.x 的80埠對映到內網位址 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

第二步:在互聯通線路的防火牆上,將互聯通給我們的ip位址y.y.y.y 的80埠對映到內網位址 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

192.168.168.1,192.168.168.2:

[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

第四步:在web伺服器上配置策略路由:將來自聯通線路的,發給192.168.168.1的請求的響應包,傳送給192.168.168.11,然後通過聯通的線路,返回給使用者;將來自互連通線路的,發給192.168.168.2的請求的響應包,發給192.168.168.12,然後通過互聯通的線路返回給使用者.這樣,就可以實現 從哪條線路進來的請求,其響應也從該線路出去。 具體配置如下:

[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   

/sbin/ip: /sbin/ip: cannot execute binary file

[root@web ~]# ip rule list

0:      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

就這樣,就搞定了。good luck !!!

關於Google的兩條訊息

一大早,電梯裡,johnny說,開復去了google。這是一條讓人驚訝的訊息。開復在微軟裡面是影響我很大的乙個人。劉潤,我,還有很多周圍的人的大學情節和公益的想法,都受了他的影響。開復在的時候創辦的微軟俱樂部就是這樣的大學專案,我非常開心能有機會兼任微軟俱樂部在上海的工作兩年左右,也高興的看到三屆的...

關於Google的兩條訊息

一大早,電梯裡,johnny說,開復去了google。這是一條讓人驚訝的訊息。開復在微軟裡面是影響我很大的乙個人。劉潤,我,還有很多周圍的人的大學情節和公益的想法,都受了他的影響。開復在的時候創辦的微軟俱樂部就是這樣的大學專案,我非常開心能有機會兼任微軟俱樂部在上海的工作兩年左右,也高興的看到三屆的...

Subway Lines(樹上兩條路的交點數)

原題 題意 給出一棵樹,n節點,每次詢問給兩對葉子,求這兩對葉子產生路徑的交集 解析 找被走過兩次的點 走被走過兩次的所有lca,lca所構成的那一段長度就是點的數量 顯然,目標線段的端點一定是這些葉子節點的某個lca 找到所有lca,放入set 統計哪些lca被走過兩次 怎麼判斷走過幾次 一對葉子...