策略路由和頻寬合併

前提:

  1. 準備一台nat伺服器,將多線路接上,真正的網頁伺服器在這台後面。
  2. 所有網站都在同一台網頁伺服器上。
  3. 每一個網站的網址 dns 指向 www 都有 2 個ip,分別代表不同線路,但不管使用那一個ip,都會指到同一台伺服器上。

 

狀況1:

當用戶A

要連線 網站1 ( 得到第1個dns值 )

所以發起連線後連到 ip 1

伺服器經由nat處理完後,由第 1 條線路回傳

 

狀況2:

當用戶B

要連線 網站1 ( 得到第2個dns值 )

所以發起連線後連到 ip 2

伺服器經由nat處理完後,由第 2 條線路回傳

 

由於伺服器是被動的被人連結取得網站資料,所以本身的頻寬合併並沒有意義,除非要連線別人。

所以透過多 dns 設定,可以動態的使用不同的線路,且因為伺服器皆是同一台,並不會產生資料不同步的情況。

 

當然前提是這台伺服器要很強,備援的伺服器也要很強。

 

缺點:

多 dns 設定只是使用循環式的方式在動態使用線路1和線路2,並不會針對負載做調整,且線路1如果斷線,得到線路1的用戶無法連線網站。

 

所以呢,根本沒有合併!只有分流

合併和分流的具體差異就是:
使用 Multiple Routing (Load-Balance)多重路由技術
有些網路應用會出問題,必須設固定路由來解決

比如線上遊戲,本機端要不斷送出封包,並且接受伺服器端的資料
但是如果 LAN 端的封包,一直 A、B兩線亂送
送出去的封包,souce IP(來源 IP)都不同
那麼對方伺服器,要不認為你斷線了,要不就是認為被攻擊,連線就會中斷

所以多重路由,一般來說,只適合用在瀏覽網頁,下載檔案…之類的應用
需要保持連線的網路應用,就不適合了

這類需要保持連線的網路應用,在多重路由閘道下
需要設定固定路由,來解決問題
具體就是 iptables 抓 ip 或 port 貼標籤
然後 iproute2 抓標籤,並指定路由表
如條件符合,就固定只送 A線 或 B線,固定一條線,絕不換線分流

2.
DNS 跳號(俗稱:Inbond Load blance)
講白了,說穿了,就是 DNS 的設定,和網路完全無關…

Linux 的 DNS 服務,是一支叫 bind9 的軟體負責
它有一個「正向解析檔」、一個「反向解析檔」
「DNS 跳號」就是在「正向解析檔」動手腳

要了解何謂「DNS 跳號」,可以試著去 ping
www.yahoo.com
www.google.com
這類的國際大站

ping 之後,會得到對方伺服器的 IP
請注意看,是不是每次 ping,或每隔幾次 ping
對方伺服器 IP 居然更換了!?

這是如何辦到的?
非常簡單,就是「DNS 跳號」

在「正向解析檔」中,同一個 Domain Name 設定多個「A 紀錄」
舉例:
www in A 11.22.33.44
www in A 22.33.44.55
www in A 33.44.55.66

這是合法的設定,不會被 bind9 視為錯誤
當有人向 DNS 伺服器要求解析 IP 時
bind9 就會依照你設定的多組「A 紀錄」,輪流回報
第一個人詢問解析,回應:11.22.33.44
第二個人詢問解析,回應:22.33.44.55
…..以此循環
這個就是所謂的「DNS 跳號」

講白了,說穿了,簡單到不行,就是一個概念而已
眉角說破不值錢,就是這個道理

換言之,如果你有多條 WAN 線
每個 WAN 線,IP 應該都不同
就可以通通寫上「A 紀錄」中
這樣當外面的網友查詢你的 DNS 伺服器時
就會自動跳號,從不同的線路進入伺服器
如此就可以達到分流的效果

「DNS 跳號」是用於伺服器的情況
和網路設定完全無關,純粹只是從 DNS 動手腳
當然的,你要有自己的 DNS server
DNS 其實不吃資源,和 apache 同一台就可以了
DNS 給 ISP 託管的話,一般都不提供多組 A紀錄 的設定