第十四卷 使用負載均衡技術建設高負載的網絡站點(1 / 3)

第十四卷 使用負載均衡技術建設高負載的網絡站點

Internet的快速增長使多媒體網絡服務器,特別是Web服務器,麵對的訪問者數量快速增加,網絡服務器需要具備提 供大量並發訪問服務的能力。例如Yahoo每天會收到數百萬次的訪問請求,因此對提供大負載Web服務的服務器來講,CPU、I/O處理能力很快會成為瓶頸。

簡單的提高硬件性能並不能真正解決這個問題,因為單台服務器的性能總是有限的,一般來講,一台PC服務器所能提供的並發訪問處理能力大約為1000個,更為高檔的專用服務器能夠支持3000-5000個並發訪問,這樣的能力還是無法滿足負載較大的網站的要求。尤其是網絡請求具有突發性,當某些重大事件發生時,網絡訪問就會急劇上升,從而造成網絡瓶頸,例如在網上發布的克林頓彈劾書就是很明顯的例子。必須采用多台服務器提供網絡服務,並將網絡請求分配給這些服務器分擔,才能提供處理大量並發服務的能力。

當使用多台服務器來分擔負載的時候,最簡單的辦法是將不同的服務器用在不同的方麵。按提供的內容進行分割時,可以將一台服務器用提供新聞頁麵,而另一台用提供遊戲頁麵;或者可以按服務器的功能進行分割,將一台服務器用提供靜態頁麵訪問,而另一些用提供CGI等需要大量消耗資源的動態頁麵訪問。然而由網絡訪問的突發性,使得很難確定那些頁麵造成的負載太大,如果將服務的頁麵分割的過細就會造成很大浪費。事實上造成負載過大的頁麵常常是在變化中的,如果要經常按照負載變化來調整頁麵所在的服務器,那勢必對管理和維護造成極大的問題。因此這種分割方法隻能是大方向的調整,對大負載的網站,根本的解決辦法還需要應用負載均衡技術。

負載均衡的思路下多台服務器為對稱方式,每台服務器都具備等價的地位,都可以單獨對外提供服務而無須其它服務器的輔助。然通過某種負載分擔技術,將外部發送來的請求均勻分配到對稱結構中的某一台服務器上,而接收到請求的服務器都獨立響應客戶機的請求。由建立內容完全一致的Web服務器並不複雜,可以使用服務器同步更新或者共享存儲空間等方法來完成,因此負載均衡技術就成為建立一個高負載Web站點的關鍵性技術。

1、基特定服務器軟件的負載均衡

很多網絡協議都支持"複位向"功能,例如在HTTP協議中支持Location指令,接收到這個指令的瀏覽器將自動複位向到Location指明的另一個URL上。由發送Location指令比起執行服務請求,對Web服務器的負載要小的多,因此可以根據這個功能來設計一種負載均衡的服務器。任何時候Web服務器認為自己負載較大的時候,它就不再直接發送回瀏覽器請求的網頁,而是送回一個Locaction指令,讓瀏覽器去服務器集群中的其它服務器上獲得所需要的網頁。

在這種方式下,服務器本身必須支持這種功能,然而具體實現起來卻有很多困難,例如一台服務器如何能保證它複位向過的服務器是比較空閑的,並且不會再次發送Location指令?Location指令和瀏覽器都沒有這方麵的支持能力,這樣很容易在瀏覽器上形成一種死循環。因此這種方式實際應用當中並不多見,使用這種方式實現的服務器集群軟件也較少。有些特定情況下可以使用CGI(包括使用FastCGI或mod_perl擴展來改善性能)來仿真這種方式去分擔負載,而Web服務器仍然保持簡潔、高效的特性,此時避免Location循環的任務將由用戶的CGI程序來承擔。