金永霞, 朱金秀
(河海大學(xué) 物聯(lián)網(wǎng)工程學(xué)院, 常州 213022)
虛擬桌面是一種重要的云資源交付手段,它利用虛擬化技術(shù)將用戶的桌面環(huán)境存放于云平臺,用戶使用終端設(shè)備通過網(wǎng)絡(luò)和遠(yuǎn)程桌面協(xié)議訪問云端的客戶桌面和應(yīng)用程序。桌面虛擬化技術(shù)能夠?qū)τ脩糇烂孢M(jìn)行統(tǒng)一調(diào)度和管理,合理分配資源,降低維護(hù)成本,提升機(jī)房和實驗室應(yīng)用和管理水平,為高校計算機(jī)實驗室的部署和管理提供了全新的解決思路。目前有代表性的商業(yè)化虛擬桌面產(chǎn)品如XenDesktop、VmwareView等已非常成熟但成本較高,因此研究者們對教學(xué)用虛擬桌面系統(tǒng)的架構(gòu)、關(guān)鍵技術(shù)、熱點算法等方面做了大量的研究[1-3],如文獻(xiàn)[1]設(shè)計了基于QEMU-KVM虛擬化框架的虛擬化資源池及其管理系統(tǒng),對虛擬桌面服務(wù)端的構(gòu)建有一定的借鑒作用。文獻(xiàn)[2]應(yīng)用Vmware虛擬化技術(shù)實現(xiàn)用于實驗教學(xué)的桌面云環(huán)境,提高了IT資源管理的水平和效率,但由于Vmware并不是開源的,在系統(tǒng)優(yōu)化方面會帶來成本上升。文獻(xiàn)[3]提出了基于VDI技術(shù)的虛擬桌面管理平臺解決方案,側(cè)重于系統(tǒng)的可靠性和安全性設(shè)計并進(jìn)行了測試分析。各高校也相繼建立了符合自身需求的虛擬桌面管理平臺[4-6]。
本文從高校計算機(jī)實驗教學(xué)的特點和需求出發(fā),設(shè)計基于OpenStack開源云框架的桌面虛擬化方案。由于OpenStack只提供了IaaS云平臺的基礎(chǔ)環(huán)境,并不具備對虛擬桌面應(yīng)用的統(tǒng)一管控,本方案利用OpenStack提供虛擬桌面的資源池,在此基礎(chǔ)上對桌面虛擬化的環(huán)境進(jìn)行改進(jìn),設(shè)計虛擬桌面管理平臺把OpenStack基礎(chǔ)架構(gòu)和桌面虛擬化技術(shù)相結(jié)合,使系統(tǒng)更適用于虛擬桌面應(yīng)用的需求。以O(shè)penStack云平臺作為虛擬桌面的服務(wù)端,充分利用云平臺自身強(qiáng)大的計算能力和安全性,有效整合各專業(yè)實驗教學(xué)資源,提供資源共享、按需分配的實驗環(huán)境支持。
計算機(jī)實驗教學(xué)機(jī)房需要根據(jù)不同專業(yè)不同課程的實驗要求,配置多種實驗環(huán)境,具有批量部署、集中管理的特點。從教學(xué)應(yīng)用的實際需求考慮,實驗教學(xué)機(jī)房的桌面虛擬化設(shè)計應(yīng)該要滿足以下幾點:
(1) 支持個性化教學(xué)環(huán)境設(shè)置
要求根據(jù)不同課程的教學(xué)和實驗要求,創(chuàng)建不同的虛擬桌面并進(jìn)行個性化定制。用戶可以隨時通過校園網(wǎng)以瀏覽器、客戶端的方式登錄虛擬桌面系統(tǒng),使用屬于自己的桌面環(huán)境。
(2) 集中管控,提高管理和維護(hù)效率
解決傳統(tǒng)桌面系統(tǒng)部署、軟件更新效率低的問題,要求對操作系統(tǒng)和應(yīng)用軟件實現(xiàn)一次操作、統(tǒng)一部署;對客戶機(jī)的運(yùn)行狀況、服務(wù)狀態(tài)以及CPU使用率、內(nèi)存使用率、網(wǎng)絡(luò)負(fù)載等性能進(jìn)行實時監(jiān)控,并提供異常通知功能。
(3) 保證教學(xué)數(shù)據(jù)的安全性
解決開放式環(huán)境下的數(shù)據(jù)安全問題,要求對操作系統(tǒng)和應(yīng)用軟件進(jìn)行及時更新和升級;實現(xiàn)對數(shù)據(jù)的備份,能將桌面環(huán)境快速恢復(fù)到某個可用的時間點狀態(tài)。
(4) 負(fù)載均衡,資源利用率高
要求根據(jù)師生需求動態(tài)并合理地分配資源,提高資源利用率,維持系統(tǒng)的負(fù)載均衡,使系統(tǒng)保持相對穩(wěn)定,提升桌面服務(wù)性能和工作效率。
基于實驗教學(xué)應(yīng)用的需求,桌面虛擬化系統(tǒng)是通過網(wǎng)絡(luò)、服務(wù)器、存儲的虛擬化整合計算資源,對虛擬桌面部署和使用進(jìn)行統(tǒng)一管理的虛擬桌面解決方案,能夠提供多層次、多種類的實驗資源,支持用戶遠(yuǎn)程桌面訪問。桌面虛擬化系統(tǒng)架構(gòu)如圖1所示。
圖1 桌面虛擬化系統(tǒng)架構(gòu)圖
主要包括4個部分:
(1) 硬件資源:由高性能服務(wù)器、存儲設(shè)備、網(wǎng)絡(luò)及其他硬件設(shè)備組成,是桌面虛擬化系統(tǒng)的基礎(chǔ)設(shè)施。
(2) 虛擬化平臺:基于OpenStack云平臺構(gòu)建的虛擬化資源池,其將CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)等物理資源通過KVM虛擬化技術(shù)形成統(tǒng)一的虛擬資源池,并以API的形式向外提供服務(wù),供虛擬桌面管理平臺調(diào)度和使用。
(3) 虛擬桌面管理平臺:是系統(tǒng)的核心和調(diào)度中心,負(fù)責(zé)OpenStack云平臺與虛擬桌面的交互,提供用戶登錄認(rèn)證服務(wù)、虛擬機(jī)的調(diào)度安排和策略控制、對計算資源(CPU、內(nèi)存、存儲、網(wǎng)絡(luò))的性能數(shù)據(jù)進(jìn)行監(jiān)測、并發(fā)處理客戶端的連接請求。
(4) 客戶端:用于顯示和操作虛擬桌面的終端設(shè)備,用戶通過特定的客戶端程序登錄虛擬桌面系統(tǒng),申請?zhí)摂M資源并定制個性化實驗環(huán)境,使用遠(yuǎn)程訪問協(xié)議獲取虛擬桌面。
根據(jù)實驗教學(xué)需求分析和桌面虛擬化基礎(chǔ)架構(gòu)設(shè)計,虛擬桌面系統(tǒng)由服務(wù)端IaaS云平臺(包括控制節(jié)點、計算節(jié)點、存儲節(jié)點)、Web應(yīng)用服務(wù)器、云終端以及網(wǎng)絡(luò)通信設(shè)備、網(wǎng)絡(luò)安全系統(tǒng)等組成。其拓?fù)浣Y(jié)構(gòu)如圖2所示。
圖2 桌面虛擬化拓?fù)浣Y(jié)構(gòu)
系統(tǒng)采用高性能服務(wù)器構(gòu)成物理服務(wù)器集群,包括一個控制節(jié)點,一個存儲節(jié)點和多個計算節(jié)點??刂乒?jié)點負(fù)責(zé)對各項資源進(jìn)行統(tǒng)一調(diào)度和管理,計算節(jié)點負(fù)責(zé)運(yùn)行虛擬機(jī),存儲節(jié)點負(fù)責(zé)為系統(tǒng)提供存儲功能。基于實際教學(xué)中網(wǎng)絡(luò)數(shù)據(jù)傳輸和并發(fā)訪問的要求,各物理服務(wù)器之間采用光纖交換機(jī)連接,保證服務(wù)器和存儲系統(tǒng)之間通信暢通。機(jī)房終端接入采用全千兆以太網(wǎng)交換機(jī),可滿足機(jī)房集中實驗100個用戶并發(fā)訪問虛擬桌面的需求。根據(jù)多用戶條件下吞吐性能和存儲容量需求,選擇IP-SAN構(gòu)建存儲網(wǎng)絡(luò),支持多存儲容量整合,實現(xiàn)對存儲設(shè)備的集中管理、狀態(tài)監(jiān)控以及容量的動態(tài)擴(kuò)展,提供虛擬化平臺數(shù)據(jù)存儲、備份空間和數(shù)據(jù)緩存功能。
Web服務(wù)器提供桌面應(yīng)用程序和系統(tǒng)數(shù)據(jù)庫服務(wù),實現(xiàn)以瀏覽器方式訪問云桌面。管理員和終端用戶分別可以對權(quán)限范圍內(nèi)的資源進(jìn)行訪問和操作,管理員還可以在服務(wù)端通過控制命令方式對整個集群進(jìn)行管理和維護(hù)。
桌面虛擬化系統(tǒng)服務(wù)端主要硬件配置參數(shù)如表1所示。
表1 服務(wù)端主要硬件配置參數(shù)
系統(tǒng)采用OpenStack作為桌面虛擬化的基礎(chǔ)服務(wù)架構(gòu),對實驗資源和實驗環(huán)境進(jìn)行統(tǒng)一管理,提供基本的用戶管理、鏡像模板管理、虛擬機(jī)實例管理、存儲空間服務(wù)等。為便于虛擬桌面應(yīng)用的定制和統(tǒng)一管控,在IaaS基礎(chǔ)架構(gòu)之上部署了虛擬桌面管理平臺,把桌面虛擬化技術(shù)和OpenStack基礎(chǔ)架構(gòu)相融合[7],實現(xiàn)更合理的資源配置和更簡便的云桌面交付方式。桌面虛擬化系統(tǒng)功能模塊部署的基本結(jié)構(gòu)如圖3所示。
圖3 系統(tǒng)功能模塊部署示意圖
(1) 虛擬化平臺
基于OpenStack構(gòu)建的虛擬化平臺提供了虛擬桌面應(yīng)用的各項資源。平臺的控制節(jié)點部署了數(shù)據(jù)庫服務(wù)和消息隊列服務(wù)等基礎(chǔ)組件,以及OpenStack的計算服務(wù)Nova、鏡像服務(wù)Glance、網(wǎng)絡(luò)服務(wù)Neutron、認(rèn)證服務(wù)Keystone。計算節(jié)點主要部署Nova組件提供計算服務(wù),用來承載全部的桌面虛擬機(jī)實例。
(2) 虛擬桌面管理平臺
虛擬桌面管理平臺是虛擬桌面系統(tǒng)的核心,通過與虛擬化資源池、客戶端之間的交互實現(xiàn)虛擬桌面的管理。利用OpenStack提供的豐富的API編寫控制腳本,實現(xiàn)虛擬桌面應(yīng)用環(huán)境的集成配置和統(tǒng)一部署,滿足實驗教學(xué)的功能需求。該平臺主要部署以下功能模塊:
云平臺代理:是連接OpenStack云平臺和虛擬桌面的橋梁,它對所管理的OpenStack平臺發(fā)起API調(diào)用,也為客戶端用戶提供對虛擬桌面的管理和訪問功能。
用戶驗證:通過在Keystone中集成 LDAP(輕量級目錄訪問協(xié)議)來實現(xiàn)。用戶信息存儲在LDAP服務(wù)器中,用戶登錄時,客戶端將用戶信息直接提交到云平臺代理,由云平臺代理調(diào)用相應(yīng)API進(jìn)行驗證。若驗證通過,則在云平臺中生成用戶會話,響應(yīng)客戶端的請求。
連接服務(wù):基于SocketServer框架實現(xiàn)的異步通信模塊,用以并發(fā)處理多個客戶端的連接請求。通過配置監(jiān)聽端口和包過濾規(guī)則,偵聽并接受客戶端請求,根據(jù)用戶名、密碼發(fā)送該用戶所擁有的虛擬桌面列表。
資源監(jiān)測:系統(tǒng)采用開源的網(wǎng)絡(luò)資源監(jiān)控工具Ganglia對物理節(jié)點和虛擬機(jī)集群的CPU、內(nèi)存和硬盤利用率等性能數(shù)據(jù)進(jìn)行實時監(jiān)控。為了給調(diào)度管理模塊提供系統(tǒng)性能度量參數(shù),監(jiān)測服務(wù)將Ganglia采集的監(jiān)控數(shù)據(jù)封裝為特定格式的文件存儲在物理服務(wù)器,通過定時讀取該數(shù)據(jù)文件并進(jìn)行解析,將獲取的監(jiān)測數(shù)據(jù)寫入數(shù)據(jù)庫并共享給調(diào)度管理模塊。
調(diào)度管理:提供以負(fù)載均衡為目標(biāo)的虛擬桌面調(diào)度策略。在創(chuàng)建虛擬桌面時,根據(jù)獲取到的云平臺性能監(jiān)測數(shù)據(jù),結(jié)合虛擬桌面的資源需求,將虛擬桌面實例部署到合適的物理節(jié)點上,避免系統(tǒng)使用時由于負(fù)載不均而導(dǎo)致虛擬機(jī)的頻繁遷移。
(3) 客戶端
客戶端應(yīng)用程序是終端用戶的直接操作模塊,基于Spice協(xié)議進(jìn)行開發(fā)和設(shè)計。根據(jù)實驗室終端機(jī)的配置情況和實驗教學(xué)的需求,生成針對Windows用戶的虛擬桌面客戶端安裝文件,并在本地安裝該文件得到客戶端應(yīng)用程序。用戶在客戶端提出訪問申請,驗證成功后會看到自己所擁有的所有虛擬桌面,并可以對虛擬桌面進(jìn)行操作。
虛擬桌面管理平臺各功能模塊基于 OpenStack 提供的API接口,使用Python語言編程實現(xiàn),并通過對OpenStack配置文件進(jìn)行參數(shù)設(shè)置,將相關(guān)管理控制功能集成到云平臺中。下面介紹云平臺代理和調(diào)度管理這兩個模塊的具體功能和實現(xiàn)方法。
(1) 云平臺代理模塊
為提高系統(tǒng)的安全性,云桌面管理平臺在與其之外的模塊進(jìn)行通信或API調(diào)用時,要通過云平臺代理模塊實現(xiàn)。云平臺代理為客戶端提供訪問OpenStack云平臺的接口,也為用戶驗證提供與LDAP服務(wù)器交互的接口。在該模塊中基于面向?qū)ο蠹夹g(shù)設(shè)計實現(xiàn)以上接口功能的關(guān)鍵類,采用Python 拓展技術(shù)封裝而成。這些類的交互關(guān)系如圖4所示。
圖4 云平臺代理模塊關(guān)鍵類圖
LDAPProxy類是云平臺用戶驗證的代理,負(fù)責(zé)向LDAP服務(wù)器認(rèn)證,其中封裝了auth、modify等方法實現(xiàn)對用戶的驗證和修改操作。
LDAPConnect類封裝了connect等方法,主要功能是通過與LDAP服務(wù)器的交互,判斷用戶提交的信息是否可以通過認(rèn)證。當(dāng)客戶端將用戶名和密碼提交到云平臺后,由云平臺代理委托給LDAPProxy的auth方法。在auth方法中生成LDAPConnect,調(diào)用其connect方法執(zhí)行搜索、匹配、綁定LDAP服務(wù)器等操作,若綁定成功則驗證通過,否則驗證失敗。
ServerAPI類提供對云平臺進(jìn)行遠(yuǎn)程API調(diào)用的函數(shù),客戶端用戶通過該接口實現(xiàn)獲取虛擬桌面以及改變虛擬桌面狀態(tài)的功能,包括啟動、停止、刪除、掛起、喚醒虛擬桌面等操作。
(2) 調(diào)度管理模塊
調(diào)度管理模塊的主要功能是為創(chuàng)建的虛擬桌面尋找合適的計算節(jié)點,同時使得各個計算節(jié)點負(fù)載盡量平衡。結(jié)合OpenStack默認(rèn)的調(diào)度策略FilterScheduler,該模塊的調(diào)度管理也分為兩個步驟:① 自定義json 格式的過濾器腳本,根據(jù)用戶配置的硬件需求、用戶指定的實例類型和計算節(jié)點當(dāng)前的可用資源判斷計算節(jié)點是否符合要求,得到滿足條件的所有可用節(jié)點的集合。② 按照負(fù)載均衡策略實現(xiàn)權(quán)值計算。根據(jù)計算節(jié)點的性能監(jiān)控數(shù)據(jù),評估各節(jié)點的負(fù)載狀態(tài)(即計算權(quán)值),選取權(quán)值最小的節(jié)點為目標(biāo)節(jié)點。
調(diào)度管理算法對虛擬資源r(r∈{cpu,memory})進(jìn)行綜合考量,具體實現(xiàn)流程如下:
Step1 提交創(chuàng)建虛擬桌面的請求,確定該請求對虛擬資源r的需求Rr(r∈{cpu,memory});
Step2 若集群的虛擬資源足夠分配該請求, 獲取滿足過濾條件的可用節(jié)點列表{H1,H2,…Hn};
Step3 根據(jù)各節(jié)點的性能監(jiān)控數(shù)據(jù),獲取節(jié)點中虛擬資源r的已分配量Ur,節(jié)點所提供的虛擬資源r的總量Tr;
Step4 對每個可用節(jié)點Hi,評估Hi的負(fù)載狀態(tài)Li
Step5 選取Li最小的節(jié)點Hi做為部署虛擬桌面的目標(biāo)機(jī)。
在具體實現(xiàn)時繼承OpenStack的filter類和weighter類,自定義過濾器和權(quán)值計算器,重寫對主機(jī)的過濾方法和權(quán)值計算函數(shù)。然后將過濾器的腳本文件集成到OpenStack控制節(jié)點nova安裝目錄的scheduler包中,同時在云平臺的nova.conf文件中配置參數(shù),指定過濾器列表和權(quán)值計算函數(shù),從而實現(xiàn)對OpenStack調(diào)度機(jī)制的擴(kuò)展。過濾器和權(quán)值計算關(guān)鍵類如圖5所示。
圖5 調(diào)度管理模塊關(guān)鍵類圖
計算機(jī)相關(guān)專業(yè)課程所涉及的軟件類型多、更新快,對運(yùn)行環(huán)境要求也較高。將桌面虛擬化技術(shù)應(yīng)用在實驗教學(xué)中,實現(xiàn)對資源的集中管理、統(tǒng)一配置,提供簡便靈活的訪問方式,滿足了教學(xué)應(yīng)用的多樣化服務(wù)需求。具體表現(xiàn)在以下幾個方面:
(1) 提供多樣化、個性化實驗教學(xué)資源
隨著我校實踐教學(xué)內(nèi)涵建設(shè)的不斷推進(jìn),學(xué)生對實驗資源的需求表現(xiàn)出多樣化、多層次的特點?;谧烂嫣摂M化技術(shù)的實驗教學(xué)機(jī)房提供多種實驗資源支撐,包括基礎(chǔ)課程資源和創(chuàng)新訓(xùn)練平臺,用戶可按照個人需求定制個性化虛擬桌面,根據(jù)實驗需求部署相應(yīng)的軟件開發(fā)環(huán)境,建立自己專有的桌面環(huán)境。虛擬桌面系統(tǒng)配置了包括主流操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、軟件開發(fā)語言環(huán)境、分布式數(shù)據(jù)處理以及移動應(yīng)用程序開發(fā)等在內(nèi)的多種實驗資源,滿足不同專業(yè)課程的實驗需要。此外,根據(jù)學(xué)生創(chuàng)新實踐項目和學(xué)科競賽活動的要求,還部署了適用于大數(shù)據(jù)項目實踐、云計算應(yīng)用訓(xùn)練、移動流媒體應(yīng)用開發(fā)等項目的創(chuàng)新實踐訓(xùn)練平臺,支持學(xué)生開展自主創(chuàng)新實踐活動。
(2) 開放的實驗方式
與傳統(tǒng)實驗方式相比,桌面虛擬化提供了時間、空間和資源的便利,學(xué)生通過校園網(wǎng)可以隨時隨地登錄到虛擬桌面系統(tǒng),申請分配實驗所需的軟硬件資源,體驗主動學(xué)習(xí)的新型實驗環(huán)境,大大提高了實驗過程的連續(xù)性和開放性。
(3) 提高機(jī)房運(yùn)維效率
采用桌面虛擬化技術(shù),實驗教學(xué)的所有數(shù)據(jù)和應(yīng)用軟件都運(yùn)行在云端,由虛擬桌面管理平臺對資源進(jìn)行統(tǒng)一認(rèn)證和管理,便于硬件資源的擴(kuò)展和軟件資源的升級、更新,實現(xiàn)有效的教學(xué)管理、資源配置和實驗部署。借助OpenStack云平臺提供的獨(dú)立虛擬網(wǎng)絡(luò)環(huán)境實現(xiàn)了應(yīng)用程序的隔離,保障了多用戶環(huán)境下的數(shù)據(jù)安全。桌面虛擬化系統(tǒng)中的實驗環(huán)境具有快速部署、易于備份和恢復(fù)的優(yōu)點,大大提高了實驗機(jī)房的運(yùn)維效率。
通過把桌面虛擬化技術(shù)應(yīng)用于高校實驗教學(xué)機(jī)房,在虛擬化資源之上提供新型的定制應(yīng)用環(huán)境,既滿足了不同的實驗教學(xué)需求,也實現(xiàn)了對資源的最大化利用和最優(yōu)化管理。云平臺本身具有高性能、高可用性和易用等特點,基于OpenStack的桌面虛擬化方案的實施改變了傳統(tǒng)實驗教學(xué)方式,提高了實驗維護(hù)管理工作的效率,也為深化高校教育教學(xué)改革和創(chuàng)新提供了很好的技術(shù)支持。