工作流程
(1)鏈路負載均衡設備 接收區域網路用戶流量
(2)鏈路負載均衡設備根據目的IP來查找目的IP所屬運營商
(3)鏈路負載均衡設備根據選定的運營商結果將流量轉發給選定的鏈路
(4) 鏈路負載均衡設備接收外網用戶流量
(5)鏈路負載均衡設備將流量轉發給區域網路用戶
圖中Cluster A為防火牆負載均衡的集群,Cluster B為NAT方式伺服器負載均衡的集群。綜合組網的工作流程就是防火牆、伺服器負載均衡流程的疊加。這樣的組網方式既避免了防火牆成為網路中的瓶頸,也提高了各種網路服務(如HTTP、FTP)的性能和可用性。
基本元素
l LB device:負責將區域網路到外網流量分發到多條物理鏈路的設備。
l 物理鏈路:運營商提供的實際鏈路。
l DIP:用戶傳送報文的目的網段。
l 鏈路頻寬:運營商提供給此鏈路的實際頻寬。
l 鏈路閾值:流量超過此鏈路閾值時會進行相應頻寬調度。
l 鏈路權重:多條鏈路在同一調度策略中,根據加權調度算法將目標流量根據權重比進行分發。
l 健康檢查:檢查運營商鏈路的質量。
l 所屬運營商:確定此條鏈路所屬哪個運營商。
l 路由模式:確定此條鏈路需要下發哪些路由。
l 目的IP組:確定去往此目的運營商IP所走的鏈路。
l 源地址組:確定哪些區域網路用戶能匹配此條鏈路。
l 協定:確定哪些協定能匹配此條鏈路。
l 入接口:確定從哪些接口流入的流量能匹配此條鏈路。
l 策略動作:當所選物理鏈路都超閾值後,設備對超閾值流量的處理方式。
l 會話保持:匹配源目ip的同一會話在老化時間內走同一條鏈路。
l DNS透明代理:區域網路用戶向外網域名請求時,設備將此報文攔截重新選擇負載最小的鏈路轉發。
CDN是個很龐大的概念和體系.全世界CDN服務提供商屈指可數.
我們熟悉的Google就是某CDN的最大客戶.我們今天只選取其中一小部分來討論.
說了半天.看上去似乎很複雜.鑒於經典的大多是搞WEB的.接觸的最多的是WEB伺服器/資料庫等.既然是淺談.我就舉個簡單的例子.
例子
比如你弄一網站.假設你有能力購買2台伺服器.作為WEB服務.暫時我們認為伺服器本身不存在性能問題.一台託管在北方的
網通機房.一台託管在南方的電信機房.2台伺服器內容互為同步.則通過智慧型的DNS解析設備.將網通的用戶定位到北方網通的伺服器上.將電信的用戶定位到南方電信的伺服器上.這.就是最基礎的CDN.我的理解是 ---
廣域網的負載均衡.
2台伺服器放置問題我不想多談.有錢就行.2台伺服器內容同步的方式很多.我也不想多談.今天主要是要談一下.如何實現讓網通的用戶去訪問放置在網通的伺服器.電信的用戶去訪問放置在電信的伺服器.
即如今很多服務提供商所謂的智慧型DNS解析.也就是網際網路鏈路的負載均衡.
電信/網通.2條鏈路的負載均衡.我們先來談談這個.因為這個是訪問者最直觀的體驗.
既然CDN的目的是為了提高用戶訪問網站的回響速度.最直接的方法就是做網際網路鏈路的智慧型導向.
當然.CDN也涉及多台伺服器負載均衡.套用的負載均衡.包括中間件的套用負載均衡.因為時間關係暫且不表.
當我們將 www.Blueidea.com 輸入IE地址欄敲回車後.首先要去你的Local DNS做解析.什麼是Local DNS?就是你本機網卡所設定的DNS伺服器.比如我的是: 202.96.128.68.如果Local DNS沒有 www.Bluieidea.com 的Cache記錄.則Local DNS會詢問上級DNS伺服器.注意.DNS的查詢結構是樹狀的.最後查詢的DNS為root.即為root DNS.或者稱為根DNS.根DNS在全世界只有13台.中國境內沒有.當root DNS接受到請求後.通過查詢獲得的結果一般是: Blueidea.com這個域的解析伺服器為ns1.chinadns.com.要求你去詢問ns1.chinadns.com去做解析.ns1.chinadns.com是哪裡來的?當然是你申請註冊域名的機構自己的DNS伺服器.也就是你Blueidea.com這個域名的隸屬DNS.隸屬DNS獲得了你域名解析的請求.則查詢A記錄.返回Blueidea.com的IP位址給最初的PC Client端.完成了一次域名解析為IP位址的全部過程.
雖然很繞.但是如果能搞明白.那才能理解下面的關於智慧型DNS的技術原理.
上述DNS查詢的常規流程.基本上就是如下圖:
PC -> Local DNS -> Root DNS -> ns1.chinadns.com -> IP -> 返回給PC
智慧型DNS的工作原理即是在ns1.chinadns.com這一步.工作流程如下:
PC -> Local DNS -> Root DNS -> 智慧型DNS解析 -> 返回IP位址 -> 返回給PC
注意.上述的"返回IP位址"這一步.其實是根據PC的來源.智慧型的返回電信或者網通的IP位址.即如果請求解析的PC是電信線路的.則返回託管在南方電信機房的伺服器的電信IP位址.反之.則返回託管在北方
網通機房的網通的IP位址.
看到這裡.出現了一個問題.如何判斷這個請求DNS的PC.他是電信線路還是網通線路呢?
有2個方法.一個聰明的.一個笨的.我們先說笨的方法.如果智慧型DNS有一張龐大的IP位址分配表.表裡面有所有的電信IP位址段和所有的網通地址段.則可以通過查詢這個IP位址表來判斷.請求的PC是屬於哪個線路上的.這個方法是最直接.最高效.最穩妥的方法.雖然的確是笨了點.但是請各位注意.往往笨的方法就代表著穩定.代表著高可用性.所以.我很遺憾的告訴大家.基本上銀行.證券.金融.這些重要部門.都是使用的這種笨的方法.
另外一個聰明的方法.則是通過智慧型的動態檢測的方法.在智慧型DNS解析設備接受到PC的DNS請求的時候.將使用電信/網通的2條線路分別傳送一個探測包.傳送目標可以為目標PC的IP位址.不過更多的傳送目標為Local DNS.這個包可能是ICMP的PING包.也可能是反向DNS查詢的DNS包(TCP 53).當2個包有回應後.比較2個包的
時間戳.延遲小的.則判定為優先解析的鏈路.
解決辦法
每個網路都有一些鏈路定期會超載。我們通常可以使用網路管理系統的報告或使用命令行界面(CLI)收集接口信息的腳本來鑑定這些鏈路,查看輸出丟包率高的鏈路。注意:輸入丟包是罕見的,通常意味著設備中的分組處理路徑以某種方式受到影響。任何輸入丟包都應該進行檢查。還要注意的是簡單網路管理協定也使用術語丟包(discards),於是命令行界面(CLI)經常使用屬於丟包(drops).CLI的輸出一般是這樣的語句:
Gigabit Ethernet 1/10 is up, line protocol is up (connected)
Hardware is C 6k 1000Mb 802.3, address is 0008.6a2f.18a5
Input queue: 0/2000/0/0 (size/max/drops/flushes);
Total output drops: 116123
5 minute input rate 62675000 bits/sec, 6824 packets/sec
5 minute output rate 14618000 bits/sec, 4944 packets/sec
相對於接口輸出包的總數,計算丟包的百分比。任何接口呈現的丟包率大於0.0001%都應該注意,因為這個丟包率表示使用TCP協定會受到影響。另一種方法是,跟蹤丟包數超過某個閾值的接口,這個閾值可以是1萬個丟包數/天。
一旦擁塞接口確定,那么就可以通過提高服務質量(QoS)或提高接口速度來解決問題。首先我們來看一下QoS解決方案,然後再看看有哪些因素決定了鏈路擁塞可以得到解決,以及鏈路速度是否必須升級。