虛擬化是新一代數(shù)據(jù)中心最為關(guān)鍵的技術(shù)之一,是實現(xiàn)云計算的基礎(chǔ)。我們知道云計算的核心是資源的網(wǎng)絡(luò)化共享與應(yīng)用,實現(xiàn)人們訪問網(wǎng)絡(luò)資源就像是訪問本地資源一樣,所有應(yīng)用都在虛擬的基礎(chǔ)上而不是真實的基礎(chǔ)上運行,要實現(xiàn)這些都要依仗虛擬技術(shù)。數(shù)據(jù)中心引入虛擬化技術(shù),可以節(jié)約成本開支,降低部署成本、提高工作效率。其中服務(wù)器虛擬化只需要較少的硬件資源就能運行多重應(yīng)用程序和操作系統(tǒng),能允許用戶根據(jù)自身需求快速調(diào)配新的資源。還有存儲虛擬化、內(nèi)存虛擬化、操作系統(tǒng)虛擬化、網(wǎng)絡(luò)虛擬化、數(shù)據(jù)中心虛擬化等等,不同的數(shù)據(jù)中心存在著對不同虛擬化技術(shù)的需求,才衍生出來這么多虛擬化技術(shù)。不管怎樣,虛擬化已經(jīng)成為云數(shù)據(jù)中心建設(shè)和發(fā)展不可或缺的技術(shù)。
虛擬化技術(shù)改變了現(xiàn)代計算方式,它能夠提升系統(tǒng)資源使用效率、消除應(yīng)用程序和底層硬件之間的依賴關(guān)系,同時加強負載的可移植性和安全性。虛擬化實質(zhì)上再現(xiàn)了整個物理服務(wù)器作為一個虛擬機運行一個應(yīng)用,作用是抽象服務(wù)器資源,每臺虛擬機都能夠獲取唯一的操作系統(tǒng)和負載。不過虛擬機技術(shù)帶來的麻煩是每個實例都需要運行客戶端操作系統(tǒng)的完整副本以及其中包含的大量應(yīng)用程序,由此會產(chǎn)生沉重的負載,這將會影響其工作效率及性能表現(xiàn)。在這樣的需求背景下,容器技術(shù)出現(xiàn)了。容器要比傳統(tǒng)虛擬化技術(shù)更高效,容器并非虛擬化或抽象整個硬件,而只是抽象應(yīng)用或應(yīng)用的部分,如此粒度的虛擬化意味著資源將不會浪費在冗余的部分,同時還可以降低CPU、內(nèi)存和存儲需求,所以容器技術(shù)也是一種虛擬化技術(shù)。
容器虛擬化具有輕量級特性,所需的內(nèi)存空間較少,提供非??斓膯铀俣龋瑒?chuàng)建容器的速度比虛擬機要快得多,那是由于虛擬機必須從存儲系統(tǒng)檢索10GB至20GB的操作系統(tǒng),容器中工作負載使用主機服務(wù)器的操作系統(tǒng)內(nèi)核,避免了這一步,容器可以在二十分之一秒內(nèi)啟動完畢;容器虛擬化實現(xiàn)應(yīng)用程序以標準方式進行格式化,之后才放到容器中。在容器中,每種類型的應(yīng)用程序都以同樣的方式在網(wǎng)絡(luò)上移動。這樣一來,容器可以通過互聯(lián)網(wǎng)或內(nèi)部網(wǎng)絡(luò)來移動;容器虛擬化提供了更高級的隔離機制,許多應(yīng)用程序在主機操作系統(tǒng)下運行,所有應(yīng)用程序共享某些操作系統(tǒng)庫和操作系統(tǒng)的內(nèi)核,避免運行中的容器彼此沖突;容器虛擬化可以將一個大型的應(yīng)用程序分解成許多小型應(yīng)用程序,每個小應(yīng)用程序都在各自的容器里面。比如:打折奢侈品網(wǎng)站Gilt就把七個大型應(yīng)用程序分解成了300個微服務(wù),一支小隊伍維護每個服務(wù),如某一個微服務(wù)出現(xiàn)問題,可以迅速回滾/恢復(fù)。容器虛擬化技術(shù)安全度更高,容器之間可以彼此獨立地訪問。修改一層的代碼更改可以在不影響其他層的情況下執(zhí)行。這樣一來,代碼更改起來比在典型的整體式應(yīng)用程序中來得安全。
數(shù)據(jù)中心引入容器虛擬化技術(shù)也有其固有弊端,就是單個操作系統(tǒng)有可能引起影響所有相關(guān)實例的單點事故。比如,惡意軟件或者主機操作系統(tǒng)崩潰可能禁用或者影響所有容器,還有容器更容易完成遷移,但卻只能被遷移到具有兼容操作系統(tǒng)內(nèi)核的其他服務(wù)器當中,這樣會無形中減少遷移選擇;彼此鄰近的容器共享處理器、內(nèi)存和磁盤等資源,這種行為讓安全專業(yè)人員深為擔憂,與傳統(tǒng)虛擬化相比,面臨更為嚴峻的安全隱患。比如若允許兩個容器彼此對話,其中一個容器被裝入了惡意代碼,窺視被允許查看的數(shù)據(jù)當中的加密密鑰,各種機密數(shù)據(jù)可能會落到惡意軟件的手中;還有容器虛擬化技術(shù)的代表當屬Docker,Docker也不過才出現(xiàn)三年,在2014年Docker剛剛出來,所以到現(xiàn)在技術(shù)仍在不斷完善之中,而傳統(tǒng)虛擬機技術(shù)是一項高度發(fā)展、非常成熟的技術(shù),早已在成千上萬的數(shù)據(jù)中心里使用著,數(shù)據(jù)中心在引入容器技術(shù)時都會有所顧忌?,F(xiàn)在,只有在一些技術(shù)積累雄厚的大型互聯(lián)網(wǎng)公司才愿意嘗鮮容器技術(shù),并不具有普遍意義;正是因為是新技術(shù),所以用于監(jiān)控和管理容器的工具種類也十分缺乏,目前只有谷歌開源Docker管理工具Kubernetes,很多時候還有借助于傳統(tǒng)虛擬化技術(shù)的工具,缺少容器專業(yè)管理工具。
容器技術(shù)為應(yīng)用程序提供了隔離的運行空間,每個容器內(nèi)都包含一個獨享的完整用戶環(huán)境空間,并且一個容器內(nèi)的變動不會影響其他容器的運行環(huán)境。一個數(shù)據(jù)中心是采用傳統(tǒng)虛擬化技術(shù)還是容器技術(shù),要考慮數(shù)據(jù)中心現(xiàn)實情況。如果從數(shù)據(jù)中心更關(guān)注服務(wù)器虛擬化的角度來尋找最好的環(huán)境隔離方案,那么傳統(tǒng)的系統(tǒng)級虛擬化是更好的選擇;如果數(shù)據(jù)中心需要將應(yīng)用運行的實例進行隔離,那么對于管理應(yīng)用運行環(huán)境、啟動應(yīng)用實例以及控制資源開銷方面容器將是一個極為高效的工具,應(yīng)該大膽選擇容器技術(shù)。不過雖然容器技術(shù)擁有很強的兼容性,但仍然不能完全取代現(xiàn)有的虛擬機環(huán)境,容器并不是一種能夠滿足所有虛擬化任務(wù)的解決方案,只是虛擬化工具箱提供的另外一種工具。所以數(shù)據(jù)中心要采用哪種虛擬化技術(shù),一定要權(quán)衡利弊,找最適合自己的技術(shù)。當然,在一個數(shù)據(jù)中心,也可以兩種技術(shù)共存,這兩種技術(shù)并不是互斥的,只是適用的場合有所差異,各有利弊。如此便可以在不同的服務(wù)器中去部署兩種技術(shù),以此來滿足不同的應(yīng)用需要,通常容器虛擬化可以和傳統(tǒng)虛擬機很好地協(xié)同工作。
分享到微信 ×
打開微信,點擊底部的“發(fā)現(xiàn)”,
使用“掃一掃”即可將網(wǎng)頁分享至朋友圈。