簡單cdn之二

作者:田逸([email protected]
7.1.4 cdn的基本原理

 

Cdn的基本原理可概括爲:內容緩存、就近訪問以及以dns視圖方式根據用戶來源確定其訪問位置。

 

     內容緩存:緩存服務器從源站取得所需數據,然後暫存在本地的硬盤或內存。使用這種緩存機制的好處是:(1)內容自動更新;(2)無多個服務器數據相互同步問題。
     就近訪問:讓用戶的訪問請求轉向到離用戶最近或最易於訪問的緩存服務器。
     dns視圖方式根據用戶來源確定其訪問位置:即讓電信的用戶訪問電信的緩存服務器,網通用戶訪問網通的緩存服務器。

 

7.1.5 什麼是簡單cdn

 

簡單cdn這個概念,是相對於複雜cdn來定義的。因此,我們先來了解一下什麼是複雜的cdn

 

籠統一點的講,cdn服務提供商所運營的環境,就是複雜cdn。就緩存服務器而言,其結構是分層次的,一般可劃分成核心節點和邊緣節點。並且同一層級的相鄰節點之間又可形成姐妹關係,亦即在同一個集羣下的節點互爲姐妹關係。爲了保證最高的性能能和效率,不建議跨網或跨物理範圍的節點形成姐妹關係。爲了更直觀的理解這個結構和由此產生的好處,我在這裏以一個最長訪問路徑的圖示來說明:
7-2 緩存服務器相互關係

1、  用戶向某邊緣服務器(邊緣A)發起訪問請求,所需內容沒有被緩存。
2、  邊緣服務器(邊緣A)於是詢問其鄰居,是否緩存了用戶所需的請求對象,鄰居節點也沒有緩存所需的對象。
3、  邊緣服務器(邊緣A)轉而向某個父節點(核心A)請求文件,如果該父節點仍然無所需的文件,則該父節點詢問其鄰居;如果鄰居也沒有所需的文件,則把請求轉給源站。
4、  源站返回數據給核心節點(核心A),並緩存數據在該節點。
5、  核心節點(核心A)返還數據給邊緣節點(邊緣A),並緩存數據在該節點。
6、  邊緣節點返還數據給用戶,一次最長路徑的訪問完成。
這種分層次的機制,既能保證最高的可用性,又能最大限度的減少向上一級節點的網絡流量。

 

除了緩存服務器結構上的差異外,複雜cdn還具備以下一些特性:
(1)       緩存服務器布點範圍廣,服務器數量龐大。
(2)       複雜的日誌處理系統。因爲計費依賴於訪問日誌。
(3)       詳細的視圖劃分。例如精確到每個省的ip地址段。
(4)       預加載機制。

 

當我們瞭解清楚複雜cdn以後,再來了解簡單cdn就容易多了。所謂簡單cdn,就是節點層次簡單、服務器數量有限、能實現有限規模站點加速和發佈的平臺。通常情況下,我們不必爲實現cdn帶來的好處而部署複雜的cdn系統,這將花費巨大的人力物力。把複雜的cdn簡化,使之符合我們的業務需求,是本章“簡單cdn”撰寫的用意所在。

 

 

7.2簡單cdn設計

 

先申明一下,本文所設計的簡單cdn只是一個樣例,並非適用於所有的場景。讀者可根據我的思路,設計出更適合自己應用環境的簡單cdn

 

7.2.1 簡單cdn設計的基本原則

 

簡單cdn設計主要考慮以下幾點:

(1)       選點合理,能覆蓋大部分網絡用戶。最起碼得在電信和網通機房放置緩存服務器,如果經費充裕,把教育網也考慮進來。

(2)       系統本身具備很好的高可用特性。用戶的訪問主要集中在緩存服務器,緩存服務器之間使用集羣技術就能得到比較高的系統可用性。

(3)       覈算自建簡單cdn的成本,使之有較好的性價比。如果自建一個cdn遠比購買cdn服務商所花費的資金還高(目前國內商用cdn每兆帶寬爲50/月,基數是1G),基本上沒必要自己建立cdn了。

(4)       系統應該具備很好的伸縮能力,以適應各種業務變化。如增加布點、增加設備、增加站點等等。

 

7.2.2 需求描述

 

欲對三個web服務進行加速,爲了描述方便,使用域名來進行說明。這三個加速站點爲圖片站點 images.sery.cn、下載站點dl.sery.cn、主站 www.sery.cn3個站點全部是靜態內容,其頁面文件主要是.html(htm).execssjpegjs等,非常適合被緩存。

 

服務的主要目標用戶包括電信線路的用戶、網通線路的用戶、教育網的用戶,其他線路的用戶(如科技網、長城寬帶等)訪問請求被轉向到網通線路的緩存服務器。爲了實現這個目標,我們可能需要放置4組服務器來做緩存,即電信一組,網通2組,教育網一組。

 

7.2.3 簡單cdn設計

 

需求明確之後,接下來的設計工作包括:布點選擇、工具選取、cdn結構設計等幾部分。

 

     布點選取

布點包括源站、全局智能dns、緩存服務器集羣。

(1)       源站及全局智能dns選擇互聯互通性較好的第三方bgp機房;因爲使用cdn服務的站點數量有限,故在緩存服務器以主機名的方式尋址源站。

(2)       緩存服務器共4組,選擇二線或三線城市的機房託管,能節省大量的資金北京、上海等城市帶寬價格大概在300~400//月,而偏遠一點二三線城市(如安陽)1G帶寬的年總費用才8-10萬。

 

     工具選取

工具包括操作系統、dns軟件、緩存服務器軟件、負載均衡軟件、源站軟件以及定製的腳本。
(1)       所有的服務器均使用32位的centos 5.x。曾經使用過64位的系統,但在執行緩存服務器的緩存清理操作時,有些小問題。
(2)       Dns使用bind-9.4.0。低於9的版本,可能不支持視圖view,沒有視圖功能,智能dns就無法實現。不知道其他的dns軟件有沒有支持視圖view的,願知者告知。
(3)       緩存服務器有兩種選擇,一種是squid,另一種是varnishSquid多用在複雜cdn場景,它能實現緩存服務器間的層級關係(鄰居形成姊妹、邊緣節點與核心節點形成父子關係),功能強大而配置複雜;Varnish爲後起之秀,配置簡單而性能卓越,維護起來比較簡單,因此本案選擇varnish作爲緩存工具【注1
(4)       負載均衡由ipvsadmkeepalived兩部分組成。ipvsadm是核心,負責包轉發和負載分攤;keepalived爲框架,負責故障隔離和失敗切換failover
(5)       可做web服務的軟件比較多,因爲站點爲簡單的靜態文件,選擇nginx比較省事。
(6)       定製腳本主要目的是自動刷新緩存服務,把這個腳本放在摸個服務器上,只需執行一次(也可使用crontab自動調用)就能實現所有緩存服務器的緩存清理。

 

     cdn結構設計

 

我們可根據cdn的角色來設計整個結構,這些角色包括:源站、智能dns及緩存服務器3大部分,根據布點選擇和其他因素綜合考慮,我們可繪出整個cdn的佈局結構圖。

7-3 cdn服務器佈局

從圖中可以看出有2組緩存服務器放置在網通機房,這兩組服務器不在同一個物理位置,這樣做主要目的是:bind規劃視圖view時,能收集到的地址比較有限,不在收集列表的其他ip地址段,則統統轉發給網通B機房的服務器;另外網通B機房的帶寬比較便宜,機器數量也比較多,跟其他網段的互聯互通還可以。

 

(1)       源站

源站爲內容的原始發佈,儘管採用cdn技術以後源站的負荷會變得很小,但爲了有較高的可用性,可把它部署成負載均衡集羣。

 

2)智能dns

智能dns是用來實現用戶訪問轉向功能,即通過建立訪問列表,判斷用戶的訪問來源,確定其訪問對象的位置。在本案中,我建立電信、網通、教育網三個ip地址列表,未在這三個列表的稱爲其他;每個列表關聯一個bind的視圖view,那麼一共就有4個視圖view。地址列表可以自己收集,也可以花錢購買,地址列表越大,dns定向準確性越高。在這裏強調一下:ip地址列表爲客戶dns服務器所在網段的列表,而不是用戶接入網絡的ip段。客戶端計算機所設定的dns,通常稱爲用戶本地dns。同樣,爲了使其有較高的可用性,dns採用主從同步的架構。
 
以下內容省略.
簡單Cdn實現
簡單cdn功能測試
簡單Cdn監控
簡單cdn維護
其他
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章