金永霞, 朱金秀
(河海大學 物聯網工程學院, 常州 213022)
虛擬桌面是一種重要的云資源交付手段,它利用虛擬化技術將用戶的桌面環境存放于云平臺,用戶使用終端設備通過網絡和遠程桌面協議訪問云端的客戶桌面和應用程序。桌面虛擬化技術能夠對用戶桌面進行統一調度和管理,合理分配資源,降低維護成本,提升機房和實驗室應用和管理水平,為高校計算機實驗室的部署和管理提供了全新的解決思路。目前有代表性的商業化虛擬桌面產品如XenDesktop、VmwareView等已非常成熟但成本較高,因此研究者們對教學用虛擬桌面系統的架構、關鍵技術、熱點算法等方面做了大量的研究[1-3],如文獻[1]設計了基于QEMU-KVM虛擬化框架的虛擬化資源池及其管理系統,對虛擬桌面服務端的構建有一定的借鑒作用。文獻[2]應用Vmware虛擬化技術實現用于實驗教學的桌面云環境,提高了IT資源管理的水平和效率,但由于Vmware并不是開源的,在系統優化方面會帶來成本上升。文獻[3]提出了基于VDI技術的虛擬桌面管理平臺解決方案,側重于系統的可靠性和安全性設計并進行了測試分析。各高校也相繼建立了符合自身需求的虛擬桌面管理平臺[4-6]。
本文從高校計算機實驗教學的特點和需求出發,設計基于OpenStack開源云框架的桌面虛擬化方案。由于OpenStack只提供了IaaS云平臺的基礎環境,并不具備對虛擬桌面應用的統一管控,本方案利用OpenStack提供虛擬桌面的資源池,在此基礎上對桌面虛擬化的環境進行改進,設計虛擬桌面管理平臺把OpenStack基礎架構和桌面虛擬化技術相結合,使系統更適用于虛擬桌面應用的需求。以OpenStack云平臺作為虛擬桌面的服務端,充分利用云平臺自身強大的計算能力和安全性,有效整合各專業實驗教學資源,提供資源共享、按需分配的實驗環境支持。
計算機實驗教學機房需要根據不同專業不同課程的實驗要求,配置多種實驗環境,具有批量部署、集中管理的特點。從教學應用的實際需求考慮,實驗教學機房的桌面虛擬化設計應該要滿足以下幾點:
(1) 支持個性化教學環境設置
要求根據不同課程的教學和實驗要求,創建不同的虛擬桌面并進行個性化定制。用戶可以隨時通過校園網以瀏覽器、客戶端的方式登錄虛擬桌面系統,使用屬于自己的桌面環境。
(2) 集中管控,提高管理和維護效率
解決傳統桌面系統部署、軟件更新效率低的問題,要求對操作系統和應用軟件實現一次操作、統一部署;對客戶機的運行狀況、服務狀態以及CPU使用率、內存使用率、網絡負載等性能進行實時監控,并提供異常通知功能。
(3) 保證教學數據的安全性
解決開放式環境下的數據安全問題,要求對操作系統和應用軟件進行及時更新和升級;實現對數據的備份,能將桌面環境快速恢復到某個可用的時間點狀態。
(4) 負載均衡,資源利用率高
要求根據師生需求動態并合理地分配資源,提高資源利用率,維持系統的負載均衡,使系統保持相對穩定,提升桌面服務性能和工作效率。
基于實驗教學應用的需求,桌面虛擬化系統是通過網絡、服務器、存儲的虛擬化整合計算資源,對虛擬桌面部署和使用進行統一管理的虛擬桌面解決方案,能夠提供多層次、多種類的實驗資源,支持用戶遠程桌面訪問。桌面虛擬化系統架構如圖1所示。

圖1 桌面虛擬化系統架構圖
主要包括4個部分:
(1) 硬件資源:由高性能服務器、存儲設備、網絡及其他硬件設備組成,是桌面虛擬化系統的基礎設施。
(2) 虛擬化平臺:基于OpenStack云平臺構建的虛擬化資源池,其將CPU、內存、硬盤、網絡等物理資源通過KVM虛擬化技術形成統一的虛擬資源池,并以API的形式向外提供服務,供虛擬桌面管理平臺調度和使用。
(3) 虛擬桌面管理平臺:是系統的核心和調度中心,負責OpenStack云平臺與虛擬桌面的交互,提供用戶登錄認證服務、虛擬機的調度安排和策略控制、對計算資源(CPU、內存、存儲、網絡)的性能數據進行監測、并發處理客戶端的連接請求。
(4) 客戶端:用于顯示和操作虛擬桌面的終端設備,用戶通過特定的客戶端程序登錄虛擬桌面系統,申請虛擬資源并定制個性化實驗環境,使用遠程訪問協議獲取虛擬桌面。
根據實驗教學需求分析和桌面虛擬化基礎架構設計,虛擬桌面系統由服務端IaaS云平臺(包括控制節點、計算節點、存儲節點)、Web應用服務器、云終端以及網絡通信設備、網絡安全系統等組成。其拓撲結構如圖2所示。

圖2 桌面虛擬化拓撲結構
系統采用高性能服務器構成物理服務器集群,包括一個控制節點,一個存儲節點和多個計算節點。控制節點負責對各項資源進行統一調度和管理,計算節點負責運行虛擬機,存儲節點負責為系統提供存儲功能。基于實際教學中網絡數據傳輸和并發訪問的要求,各物理服務器之間采用光纖交換機連接,保證服務器和存儲系統之間通信暢通。機房終端接入采用全千兆以太網交換機,可滿足機房集中實驗100個用戶并發訪問虛擬桌面的需求。根據多用戶條件下吞吐性能和存儲容量需求,選擇IP-SAN構建存儲網絡,支持多存儲容量整合,實現對存儲設備的集中管理、狀態監控以及容量的動態擴展,提供虛擬化平臺數據存儲、備份空間和數據緩存功能。
Web服務器提供桌面應用程序和系統數據庫服務,實現以瀏覽器方式訪問云桌面。管理員和終端用戶分別可以對權限范圍內的資源進行訪問和操作,管理員還可以在服務端通過控制命令方式對整個集群進行管理和維護。
桌面虛擬化系統服務端主要硬件配置參數如表1所示。

表1 服務端主要硬件配置參數
系統采用OpenStack作為桌面虛擬化的基礎服務架構,對實驗資源和實驗環境進行統一管理,提供基本的用戶管理、鏡像模板管理、虛擬機實例管理、存儲空間服務等。為便于虛擬桌面應用的定制和統一管控,在IaaS基礎架構之上部署了虛擬桌面管理平臺,把桌面虛擬化技術和OpenStack基礎架構相融合[7],實現更合理的資源配置和更簡便的云桌面交付方式。桌面虛擬化系統功能模塊部署的基本結構如圖3所示。

圖3 系統功能模塊部署示意圖
(1) 虛擬化平臺
基于OpenStack構建的虛擬化平臺提供了虛擬桌面應用的各項資源。平臺的控制節點部署了數據庫服務和消息隊列服務等基礎組件,以及OpenStack的計算服務Nova、鏡像服務Glance、網絡服務Neutron、認證服務Keystone。計算節點主要部署Nova組件提供計算服務,用來承載全部的桌面虛擬機實例。
(2) 虛擬桌面管理平臺
虛擬桌面管理平臺是虛擬桌面系統的核心,通過與虛擬化資源池、客戶端之間的交互實現虛擬桌面的管理。利用OpenStack提供的豐富的API編寫控制腳本,實現虛擬桌面應用環境的集成配置和統一部署,滿足實驗教學的功能需求。該平臺主要部署以下功能模塊:
云平臺代理:是連接OpenStack云平臺和虛擬桌面的橋梁,它對所管理的OpenStack平臺發起API調用,也為客戶端用戶提供對虛擬桌面的管理和訪問功能。
用戶驗證:通過在Keystone中集成 LDAP(輕量級目錄訪問協議)來實現。用戶信息存儲在LDAP服務器中,用戶登錄時,客戶端將用戶信息直接提交到云平臺代理,由云平臺代理調用相應API進行驗證。若驗證通過,則在云平臺中生成用戶會話,響應客戶端的請求。
連接服務:基于SocketServer框架實現的異步通信模塊,用以并發處理多個客戶端的連接請求。通過配置監聽端口和包過濾規則,偵聽并接受客戶端請求,根據用戶名、密碼發送該用戶所擁有的虛擬桌面列表。
資源監測:系統采用開源的網絡資源監控工具Ganglia對物理節點和虛擬機集群的CPU、內存和硬盤利用率等性能數據進行實時監控。為了給調度管理模塊提供系統性能度量參數,監測服務將Ganglia采集的監控數據封裝為特定格式的文件存儲在物理服務器,通過定時讀取該數據文件并進行解析,將獲取的監測數據寫入數據庫并共享給調度管理模塊。
調度管理:提供以負載均衡為目標的虛擬桌面調度策略。在創建虛擬桌面時,根據獲取到的云平臺性能監測數據,結合虛擬桌面的資源需求,將虛擬桌面實例部署到合適的物理節點上,避免系統使用時由于負載不均而導致虛擬機的頻繁遷移。
(3) 客戶端
客戶端應用程序是終端用戶的直接操作模塊,基于Spice協議進行開發和設計。根據實驗室終端機的配置情況和實驗教學的需求,生成針對Windows用戶的虛擬桌面客戶端安裝文件,并在本地安裝該文件得到客戶端應用程序。用戶在客戶端提出訪問申請,驗證成功后會看到自己所擁有的所有虛擬桌面,并可以對虛擬桌面進行操作。
虛擬桌面管理平臺各功能模塊基于 OpenStack 提供的API接口,使用Python語言編程實現,并通過對OpenStack配置文件進行參數設置,將相關管理控制功能集成到云平臺中。下面介紹云平臺代理和調度管理這兩個模塊的具體功能和實現方法。
(1) 云平臺代理模塊
為提高系統的安全性,云桌面管理平臺在與其之外的模塊進行通信或API調用時,要通過云平臺代理模塊實現。云平臺代理為客戶端提供訪問OpenStack云平臺的接口,也為用戶驗證提供與LDAP服務器交互的接口。在該模塊中基于面向對象技術設計實現以上接口功能的關鍵類,采用Python 拓展技術封裝而成。這些類的交互關系如圖4所示。

圖4 云平臺代理模塊關鍵類圖
LDAPProxy類是云平臺用戶驗證的代理,負責向LDAP服務器認證,其中封裝了auth、modify等方法實現對用戶的驗證和修改操作。
LDAPConnect類封裝了connect等方法,主要功能是通過與LDAP服務器的交互,判斷用戶提交的信息是否可以通過認證。當客戶端將用戶名和密碼提交到云平臺后,由云平臺代理委托給LDAPProxy的auth方法。在auth方法中生成LDAPConnect,調用其connect方法執行搜索、匹配、綁定LDAP服務器等操作,若綁定成功則驗證通過,否則驗證失敗。
ServerAPI類提供對云平臺進行遠程API調用的函數,客戶端用戶通過該接口實現獲取虛擬桌面以及改變虛擬桌面狀態的功能,包括啟動、停止、刪除、掛起、喚醒虛擬桌面等操作。
(2) 調度管理模塊
調度管理模塊的主要功能是為創建的虛擬桌面尋找合適的計算節點,同時使得各個計算節點負載盡量平衡。結合OpenStack默認的調度策略FilterScheduler,該模塊的調度管理也分為兩個步驟:① 自定義json 格式的過濾器腳本,根據用戶配置的硬件需求、用戶指定的實例類型和計算節點當前的可用資源判斷計算節點是否符合要求,得到滿足條件的所有可用節點的集合。② 按照負載均衡策略實現權值計算。根據計算節點的性能監控數據,評估各節點的負載狀態(即計算權值),選取權值最小的節點為目標節點。
調度管理算法對虛擬資源r(r∈{cpu,memory})進行綜合考量,具體實現流程如下:
Step1 提交創建虛擬桌面的請求,確定該請求對虛擬資源r的需求Rr(r∈{cpu,memory});
Step2 若集群的虛擬資源足夠分配該請求, 獲取滿足過濾條件的可用節點列表{H1,H2,…Hn};
Step3 根據各節點的性能監控數據,獲取節點中虛擬資源r的已分配量Ur,節點所提供的虛擬資源r的總量Tr;
Step4 對每個可用節點Hi,評估Hi的負載狀態Li

Step5 選取Li最小的節點Hi做為部署虛擬桌面的目標機。
在具體實現時繼承OpenStack的filter類和weighter類,自定義過濾器和權值計算器,重寫對主機的過濾方法和權值計算函數。然后將過濾器的腳本文件集成到OpenStack控制節點nova安裝目錄的scheduler包中,同時在云平臺的nova.conf文件中配置參數,指定過濾器列表和權值計算函數,從而實現對OpenStack調度機制的擴展。過濾器和權值計算關鍵類如圖5所示。

圖5 調度管理模塊關鍵類圖
計算機相關專業課程所涉及的軟件類型多、更新快,對運行環境要求也較高。將桌面虛擬化技術應用在實驗教學中,實現對資源的集中管理、統一配置,提供簡便靈活的訪問方式,滿足了教學應用的多樣化服務需求。具體表現在以下幾個方面:
(1) 提供多樣化、個性化實驗教學資源
隨著我校實踐教學內涵建設的不斷推進,學生對實驗資源的需求表現出多樣化、多層次的特點。基于桌面虛擬化技術的實驗教學機房提供多種實驗資源支撐,包括基礎課程資源和創新訓練平臺,用戶可按照個人需求定制個性化虛擬桌面,根據實驗需求部署相應的軟件開發環境,建立自己專有的桌面環境。虛擬桌面系統配置了包括主流操作系統、數據庫管理系統、軟件開發語言環境、分布式數據處理以及移動應用程序開發等在內的多種實驗資源,滿足不同專業課程的實驗需要。此外,根據學生創新實踐項目和學科競賽活動的要求,還部署了適用于大數據項目實踐、云計算應用訓練、移動流媒體應用開發等項目的創新實踐訓練平臺,支持學生開展自主創新實踐活動。
(2) 開放的實驗方式
與傳統實驗方式相比,桌面虛擬化提供了時間、空間和資源的便利,學生通過校園網可以隨時隨地登錄到虛擬桌面系統,申請分配實驗所需的軟硬件資源,體驗主動學習的新型實驗環境,大大提高了實驗過程的連續性和開放性。
(3) 提高機房運維效率
采用桌面虛擬化技術,實驗教學的所有數據和應用軟件都運行在云端,由虛擬桌面管理平臺對資源進行統一認證和管理,便于硬件資源的擴展和軟件資源的升級、更新,實現有效的教學管理、資源配置和實驗部署。借助OpenStack云平臺提供的獨立虛擬網絡環境實現了應用程序的隔離,保障了多用戶環境下的數據安全。桌面虛擬化系統中的實驗環境具有快速部署、易于備份和恢復的優點,大大提高了實驗機房的運維效率。
通過把桌面虛擬化技術應用于高校實驗教學機房,在虛擬化資源之上提供新型的定制應用環境,既滿足了不同的實驗教學需求,也實現了對資源的最大化利用和最優化管理。云平臺本身具有高性能、高可用性和易用等特點,基于OpenStack的桌面虛擬化方案的實施改變了傳統實驗教學方式,提高了實驗維護管理工作的效率,也為深化高校教育教學改革和創新提供了很好的技術支持。