2013年3月14日 星期四

虛擬化可以有秒級擴充力,但要先備好策略


虛擬化可以有秒級擴充力,但要先備好策略

號稱能動態擴充的虛擬化技術,動態調整的速度可以多快?1秒鐘還是1分鐘?想要快速擴充資源,就得先算準最大用量 

用虛擬化平臺擴充運算資源的速度可以多快?相較於傳統安裝實體伺服器要數天,甚至數周的部署速度,虛擬化平臺可以在數小時,甚至十來分鐘內,就可以提供一個新的虛擬機器來執行應用系統,的確快上數倍。

甚至,VMware臺灣資深技術顧問鄭建華表示,若是因應可預期的爆量,技術上可以達到「秒」級的擴充力,但若是不可預期的爆量,則只能達到以分為單位的擴充彈性。

「分」級水平擴充方法 

鄭建華表示,用虛擬化技術擴充運算資源有3種作法,不同的作法能實現的資源擴充速度不一樣。對於不可預期的爆量需求,例如像手機預購網站塞爆的情況,最快只能在數分鐘內擴充資源,現有技術還無法將虛擬機器的擴充速度,縮短到1分鐘以內。

主要原因是,鄭建華解釋,雖然複製虛擬機器映象檔的速度很快,幾秒內就可以完成,但是虛擬機器內的作業系統開機需要一段時間,再加上應用系統啟動時間,往往需要1分鐘以上,也就拖慢了虛擬化平臺擴充資源的速度,只能達到「分」級的擴充力。

鄭建華表示,實務上一般企業會依據長期用量,也就是觀察一段持續期的用量變化,例如一個應用程式持續10分鐘都處於高負載的情況,才會動態調整來回應。這個持續期也是一種設定應用系統服務等級的方式,常見的持續期有10分鐘、15分鐘或30分鐘。因此,鄭建華表示,對企業內部應用系統而言,以分鐘為單位來擴充資源就夠了。

虛擬化技術的3種擴充方式
擴充方式
提高運算
資源的速度
作法
擴充限制
「分」級水平擴充 
數分鐘可增加1個虛擬機器
建立新的虛擬機器,並完成網路組態和應用系統部署。預先準備內建應用系統的範本映象檔可加快擴充速度。
能因應不可預期的爆量需求。
「秒」級水平擴充 
數秒內可增加1個虛擬機器
要預先完成虛擬機器的部署,包括內建應用系統也要預先建置。並事先開啟這些虛擬機器備用,待有需要時,動態將備用虛擬機器加入伺服器叢集分散用量。
需事先知道可能的最大用量,只能應付可預期的爆量需求。
「秒」級垂直擴充
數秒內可提高單一虛擬機器的運算資源
動態調整單一虛擬機器所使用的虛擬處理器核心和記憶體數量,來提高運算能力。
受限於虛擬機器所在實體機器的功能,難以大量擴充,也無法應付不可預期的爆量需求。



「秒」級水平擴充方法

虛擬化技術第二種擴充運算資源的作法,能在幾秒就可以完成動態調整,但前提是企業得先準備好虛擬機器,並且先啟動執行。當提供服務的虛擬機器塞爆時,透過負載平衡設備,將已經啟用的虛擬機器加入服務叢集來分擔流量,這樣擴充資源的速度就可縮短到幾秒內完成。

企業不只得先備妥且開啟足夠多的虛擬機器,並且要在每個虛擬機器中預先裝妥需要的應用系統,才能在應用系統需要擴充時,就能即時獲得支援,鄭建華表示:「企業必須能預估最大的擴充需求,事先備妥所有資源,虛擬化技術才能達到秒級擴充力。」

不過,鄭建華表示,這些備用的虛擬機器雖然開啟了,但是因為沒有實際執行企業應用,不會耗用太多實體伺服器的資源;只是,在一臺實體伺服器中也不能預先開啟太多虛擬機器,免得等到要使用這些虛擬機器時,反而實體伺服器的效能不足而影響虛擬機器。

要實現這樣的秒級擴充力,企業得先估算出最大用量,不管是用最大同時連線數、最大同時連線用戶數,或是最高網路流量等,都要找出應用系統的最高用量。

另外也要事先測試虛擬機器的能力,了解應用系統在不同規格的虛擬機器的執行效能,因為不同的應用程式需要耗用的運算資源不同,在虛擬機器中執行的效能也就不一樣,虛擬機器所配備的運算資源多寡,就影響著應用程式的效能。企業得先量測出不同虛擬機器的效能資訊,再比較所預估的最大用量,就可以計算出滿足最大用量需要多少虛擬機器。

例如一支應用系統在1個雙虛擬核心搭配256MB記憶體的虛擬機器中執行,可以承載1,000名用戶,企業若評估最大要服務10,000名用戶,就得事先啟用至少10個這種規格的虛擬機器,等到應用系統的使用率提高時,就可以在幾秒內擴充新的虛擬機器來分攤負載。

另外,要有秒級擴充力,得導入自動化的動態擴充機制,因為用人工監控流量變化,再手動增加虛擬機器來分流,再快還是需要數秒的時間,速度絕對比不上透過腳本程式呼叫虛擬化管理平臺的API。自動化動態擴充技術可依據警戒值,動態增加或者是減少虛擬機器的數量。

像iPhone 5預購網站或是火車訂票服務,都是提供外部民眾使用的服務,若以分為單位來擴充,速度上仍然來不及因應。這也是中華電信數據通信分公司重新設計臺鐵訂票系統的做法,先預估好最大流量,並且備妥承載最大流量所需的虛擬機器資源,並且在訂票服務啟用前,就先開啟至少能承載過半流量的虛擬機器,才足以快速因應搶秒的訂票行為。


「秒」級垂直擴充方法

上述兩種方式都是水平擴充的作法(Scale-out),虛擬機器還可以採取垂直擴充的方式(Scale-up),直接擴充虛擬機器的規格,例如增加虛擬處理器的核心數,或是動態增加記憶體,來提高應用系統的承載量。

鄭建華表示,這種擴充方式也可以達到秒級擴充的效果,以VMware的虛擬機器為例,單一虛擬機器最大可以增加到64顆虛擬處理器核心,記憶體則可以達到1TB。

但是採取垂直擴充的方式,虛擬機器的擴充能力就會受限於所在的實體伺服器。而實體伺服器的運算資源終究有限,無法使用垂直擴充的方式無限制地提高虛擬機器的運算能力。

整體來說,採用虛擬化技術來動態擴充雲端資源,是有條件的,技術上並非無法達到以秒為單位的反應能力,但在面臨不可預期的暴量需求時,得採取特別設計的作法。

常見的大型雲端服務如Facebook,Twitter、Google搜尋網站,這類網站之所以能快速動態擴充,是因為這些網站服務對資料一致性的要求不同,這類雲端服務可以容忍部分資料遺失,或暫時出現不一致的情況,所以,可以善用分散式架構來快速擴充運算資源。

但是企業應用系統卻不能容許資料出現不一致,尤其是與帳務、財務相關的資訊,所以,就難以採用分散式架構的解決方案,例如分散式的NoSQL資料庫來解決暴量的擴充需求。

企業若是租用公有雲IaaS服務,如Amazon EC2,微軟Azure等服務的虛擬機器,同樣也會遇到虛擬機器內建作業系統開機的延遲影響,而無法在1秒內快速擴充。

當然,租用公有雲服務的好處是,可以事先租用足夠的虛擬機器,等到有實際使用時再按量計費,比自建虛擬平臺更容易實現秒級擴充力的效果。

不過,採用NoSQL資料庫再搭配雲端公有雲服務,也不一定能達到秒級的擴充速度。

例如臺灣打造出全球5百萬下載量手機即時通訊軟體Cubie Messenger的力可科技,就租用了Amazon EC2來執行分散式資料庫Cassandra,每次新增一個服務節點,從取得虛擬機器空機到節點設定完成後,再自動複寫資料、重新平衡資料庫存取負載,啟動分散儲存機制等作業程序,也要10分鐘才能完成,而這已經是非常迅速的擴充速度了。

雲端是救星,但不是萬靈丹
整體來說,從技術上來看,雲端運算所謂的彈性擴充是有前提的,尤其是透過虛擬化技術來實現擴充彈性的作法,不論是技術上,或是實務上,企業應用可以實現以分為單位的擴充力,但要進一步達到秒級擴充力,則還要往前跨好大的一步。

雲端運算失靈了嗎?其實不盡然,事實上,雲端運算解決了不少問題,但雲端運算終究不是萬靈丹。

對許多企業而言,虛擬化能提供30分鐘或是1個小時的擴充速度,就已經足夠了。甚至,服務擴充能力或承載速度,是成本與服務水準的策略考量,要了解不同雲端運算技術的能耐,才不會迷失於雲霧中。

轉載自《iThome》