天天看點

螞蟻變大象:淺談正常網站是如何從小變大的(四)(轉)

原文:

【第八階段

: WebServer多機化】

上面說了這麼多,我們的業務都基本上運轉在隻有一個WebServer的條件下。如果出現當機,所有服務就停掉了;如果壓力大了,單機不能承載了,怎麼辦?

說到這個話題,我們需要來回顧一下在大學時學習的關于網絡的基本知識。^_^

抛開複雜的網絡,我們簡化我們的模型。我們的電腦通過光纖直接連入網際網路。當我們在浏覽器位址欄裡面輸入http://www.XXX.com時,到我們的浏覽器展現出頁面為止,中間出現了怎麼樣的資料變化?(注意:為了不那麼麻煩,我簡化了很多東西,比如:NAT、CDN、資料包切片、TCP逾時重傳等等)

上面的圖我們應該比較熟悉,同時也應該比較清晰的表達了我們簡化後,從輸入網址到頁面展現的一個過程。中間有兩個東西我們比較關注,也是解決我們WebServer多機化的關鍵。

1、DNS服務是否能幫我們解決多機化?

2、www.XXX.com伺服器的WebServer如何多機化?

首先,如果DNS解析能夠根據我們的請求來區分,對于同一域名,将不同的使用者請求,綁定到不同的ip上,這樣,我們就(友情提示:word統計此處已經達到10000字)能部署多個WebServer,對應不同的ip,剩下的無非就是多申請幾個ip位址而已。

當我們網站比較小的時候,我們都是在代理商處購買域名并由代理商的服務域名解析伺服器幫我們做域名解析。但是,對于許多大型的網站,都需要對類似于www.XXX.com、blog.XXX.com、img.XXX.com等在XXX.com根下的所有服務的進行域名解析,這樣便于對服務進行控制和管理。而域名的解析往往有專門的政策來處理,比如根據IP地域、根據不同請求IP的營運商等傳回不同的伺服器IP位址。(大家可能以前也有過這樣的經驗:在不同的地方,ping幾個大的網站,看到的ip是不一樣的)。

DNS政策分析和處理服務是對請求IP進行分析和判斷的系統,判斷請求來自哪個地域、哪個營運商,然後根據内部的一些庫的判斷,決定應該傳回哪個WebServer的IP。這樣,就能盡量保證使用者以最快的速度通路到對應的服務。

但是,如果我們有大量的WebServer,那每個Server都要有一個IP,另外,我們要增加一個新機器,又要申請一個IP位址,好像很麻煩,且不可接受。怎麼辦呢?

第二點,我們需要考慮對于伺服器的WebServer的多機化方式。

我們為什麼要WebServer多機化?原因就是因為單機的處理性能不行了,我們要提升處理能力。

那WebServer要做哪些事情?Hold住大量使用者請求連接配接;根據URL将請求分流到不同邏輯處理的伺服器上;有可能還有一些防攻擊政策等。其實這些都是消耗CPU的。

如果我們在WebServer前端增加一層,什麼邏輯都不處理,就是利用一定的負載均衡政策将資料包轉發給WebServer(比如:工作在IP層,而非TCP層)。那這一層的處理能力跟WebServer比是否是要強悍很多?!這樣的話,這一層後面就可以挂載很多的WebServer,而無需增加外網IP。我們暫且叫這一層叫VS(Virtual Server)。這一層服務要求穩定性較高,且處理邏輯要極為簡單,同時最好工作在網絡模型中較低的層次上。

螞蟻變大象:淺談正常網站是如何從小變大的(四)(轉)

這樣的話,我們就隻需要幾個這樣的VS伺服器組,就可以組建大量的WebServer叢集。當一個群組出現問題,直接可以通過改變IP綁定,就可以切換到其他伺服器組上。

現在這樣的VS實作有多種。有靠硬體方式實作的,也有靠軟體方式實作的。硬體方式實作的話,成本較高,但穩定性和效率較好。軟體方式實作的,則成本較低,但穩定性和效率較硬體方式要低一些。

現在用的比較多的有開源的LVS(Linux Virtual Server),是由我國的一個博士寫的,NB!以及根據LVS改寫後的一些變種。

另外還有F5 Networks公司出的收費的F5-BIG-IP-GTM等。(注:這個确實沒用過,以前在網上看過,寫到此處記不清,在百度上搜的。如有錯誤,敬請雅正)。

好了,通過上述的方式,我們基本實作了WebServer的多機化。

(這裡雖然隻有短短的1千多字,但是這個問題實際困擾過我很長的時間。因為不像搭建簡單的web服務那麼簡單,我很難實際的配置和操作DNS Server。是以這個問題的解答,其實花了我較多時間去查資料和思考。到目前為止,還沒有實際操作過,完全是空想。希望不會誤導大家。哈哈)