
虛擬化能夠讓你更好地利用你的服務(wù)器,有效地提高服務(wù)器利用率能夠節(jié)省大量的資金。現(xiàn)在,使用虛擬機復(fù)制復(fù)制服務(wù)器實例是很容易的,現(xiàn)在開始談?wù)摾眠@種新能力的最佳方法是有道理的。改善的應(yīng)用程序可用性和性能現(xiàn)在能夠輕松地實現(xiàn)了。然而,根據(jù)有關(guān)的應(yīng)用程序,如何實現(xiàn)這個目標(biāo)是有很大差別的。
水平升級與垂直升級
我們首先討論一下水平升級和垂直升級的理論區(qū)別。有些應(yīng)用程序可以升級,也就是能夠在速度更快的硬件上運行以支持更多的處理任務(wù)。我們把這種升級稱作“垂直升級”。例如,我們有一臺數(shù)據(jù)庫服務(wù)器,每秒鐘能夠處理100萬個查詢請求。由于新的需求,我們需要這臺服務(wù)器每秒鐘至少處理200萬個查詢請求。數(shù)據(jù)庫是很適合升級的,因為影響性能的瓶頸主要是內(nèi)存和處理器。如果這個瓶頸碰巧是硬盤IO(輸入輸出),那么你可以升級這個數(shù)據(jù)庫使用的存儲系統(tǒng)。
水平升級意味著增加更多的服務(wù)器和把工作量分散到多臺機器。在這個數(shù)據(jù)庫的例子中,這種升級是非常困難的,因為所有的數(shù)據(jù)庫服務(wù)器都需要使用相同的數(shù)據(jù),并且這個數(shù)據(jù)必須要復(fù)制下來。然而,水平升級服務(wù)器是一種常用的做法。
在決定進行水平升級或者垂直升級之前,你必須認識到水平升級代表它自己的問題。網(wǎng)絡(luò)應(yīng)用程序需要進程數(shù)據(jù),因此,一個負載均衡的服務(wù)器集群要有同樣的狀態(tài)。一個普通的例子是身份識別:如果一個用戶與一臺服務(wù)器進行了身份識別,這個負載均衡器將決定通過另一臺服務(wù)器為那個用戶的下一個請求提供服務(wù),它可能不會認識到這個用戶登錄了。
下面是確定水平升級是不是正確解決方案之前要問的幾個問題:
·這個應(yīng)用程序在一個負載均衡的環(huán)境中的工作是否正常?
·這個應(yīng)用程序在沒有負載均衡的條件下進行垂直升級是否能為足夠的用戶服務(wù)?
·我能在自動和可管理的方式下運行同一個應(yīng)用程序的多個實例?
如果你發(fā)現(xiàn)由于應(yīng)用程序的局限性必須要進行垂直升級,你也許根本不需要使用虛擬化。一個需要自己的服務(wù)器的應(yīng)用程序不適合進行虛擬化。虛擬化的開銷將限制你的性能。而且,你將得不到任何虛擬化的好處,如整合和物理服務(wù)器之間的遷移等,因為這個應(yīng)用程序無論如何都要在自己的專用服務(wù)器上運行。一旦發(fā)生硬件故障,這種遷移就是使用虛擬化的一個微弱的理由,因為兩臺物理服務(wù)器之間的容錯設(shè)置是很容易設(shè)置的。
這就是說,如果你能夠水平升級,你可能會從虛擬化中獲得更大的好處。管理虛擬機比管理物理硬件要容易一些。你可以在沒有關(guān)機時間的情況下拆下虛擬硬件,你的服務(wù)器利用率將達到最大化。
負載均衡與責(zé)任分離
假設(shè)我們有一個使用Apache Web服務(wù)器托管幾千個網(wǎng)站的一個Web基礎(chǔ)設(shè)施,任何擁有那么多網(wǎng)站的人都可能已經(jīng)水平升級到了某種程度,如在四臺服務(wù)器上托管500個網(wǎng)站。這種做法有幾個問題。
·任何一臺機器發(fā)生故障都意味著這500個網(wǎng)站將關(guān)閉。
·Apache在處理那樣多的網(wǎng)站的時候是很可怕的,它需要很長時間才能重新啟動一臺服務(wù)器。
·每一臺服務(wù)器的利用率可能都非常高。
我們做過一些推測。但是,讓我們假設(shè)上述問題在我們虛構(gòu)的環(huán)境中都是真實的。這個問題有兩個解決方案。
負載均衡在這種情況下不是很好的解決方案。正如上面提到的那樣,負載均衡設(shè)置需要那個應(yīng)用程序保持在一個中心的、共享的位置。在這些服務(wù)器上的2000個網(wǎng)站都能夠做到這一點是不可能的。一個好的負載均衡器能夠跟蹤入網(wǎng)的請求,并且總是把這些請求發(fā)回到同一臺后臺服務(wù)器。這種做法有一點幫助。但是,如果服務(wù)器斷開連接,這些客戶端必須重新進行身份識別。而且,負載均衡最適合升級支持水平升級的具體應(yīng)用程序。
在Apache托管太多的網(wǎng)站的情況下需要采取責(zé)任分離的方法。理想的情況是,我們想看到每個Apache實例不超過100個網(wǎng)站。你不會遇到Apache故障,因為它有許多開放的設(shè)置文件(也許每一個虛擬主機都有一個設(shè)置文件),你不需要處理負載均衡問題。這取決于硬件,但是,你很有可能在一臺服務(wù)器上運行四個至五個虛擬機。這樣你可以再一次在一臺服務(wù)器上托管500個網(wǎng)站。請等一下,那是我們以前曾達到的利用水平,只不過有了虛擬化的開銷和五個操作系統(tǒng)實例額外需要的內(nèi)存和處理器要求。確實如此,但是,每組100個網(wǎng)站使用的資源是不同的。
當(dāng)我們進行水平升級的時候,我們通過利用服務(wù)器上的VMWare軟件中的自動遷移功能可以實現(xiàn)更好的服務(wù)器利用率。你越多地進行的水平升級,優(yōu)化的機會就越多。如果你與某些類型的集群管理軟件一起使用Xen軟件,可以建立同樣的規(guī)則。免責(zé)聲明:事實上,你可能需要在這個組合中增加一臺服務(wù)器以處理未來的增長。
簡言之,使用虛擬化技術(shù)進行水平升級比使用物理服務(wù)器升級更容易,能夠得到隨意調(diào)整工作負荷的好處。能夠分成許多小部分的水平升級將提供更大的靈活性和多臺虛擬機升級戰(zhàn)略的好處。然而,一個單個的、重要任務(wù)的應(yīng)用程序適當(dāng)?shù)刂С忠粋€負載均衡的設(shè)置,負載均衡可能是你最佳的選擇。
CIO頻道人物視窗
CIO頻道方案案例庫
大數(shù)據(jù)建設(shè)方案案例庫
電子政務(wù)建設(shè)方案案例庫
互聯(lián)集成系統(tǒng)構(gòu)建方案案例庫
商務(wù)智能建設(shè)方案案例庫
系統(tǒng)集成類軟件信息研發(fā)企業(yè)名錄