邱紅飛,黃春光
(中國電信股份有限公司廣東研究院,廣州 510360)
目前,隨著云計算技術(shù)的發(fā)展,桌面云作為桌面虛擬化應(yīng)用場景獲得了快速的發(fā)展。桌面云的核心思想是將用戶的桌面環(huán)境和用戶的計算環(huán)境進(jìn)行分離,這樣桌面、應(yīng)用和基礎(chǔ)硬件可以集中部署和管理,個人可以通過各種設(shè)備,在任何地點訪問通過網(wǎng)絡(luò)訪問個人桌面系統(tǒng)。桌面虛擬化技術(shù)為成熟產(chǎn)品,應(yīng)用范圍廣,中國電信一些生產(chǎn)環(huán)境的如呼叫中心、客服中心、營業(yè)中心等已經(jīng)部署了桌面云產(chǎn)品。主要優(yōu)勢有簡化了系統(tǒng)管理、權(quán)限管理集中、安全性能加強、用戶數(shù)據(jù)可靠。
OpenStack是一個開源的云計算管理平臺項目,主要包括七個核心組件,用戶界面(Dashboard)、認(rèn)證(Identity)、計算(Compute)、對象存儲(Object Storage)、塊存儲(Block Storage)、網(wǎng)絡(luò)(Network)和鏡像服務(wù)(Im?age Service)。OpenStack由這七個主要的組件組合起來進(jìn)行工作,對數(shù)據(jù)中心的計算、存儲和網(wǎng)絡(luò)資源進(jìn)行統(tǒng)一管理。
目前部署的桌面云產(chǎn)品類型主要包括VDI(虛擬桌面基礎(chǔ)架構(gòu))和SBC(基于服務(wù)器計算即會話共享的遠(yuǎn)程應(yīng)用或桌面),產(chǎn)品有Citrix XenDesktop、VMware?view等;這樣的桌面云解決方法是通過服務(wù)器虛擬化實現(xiàn)對硬件的抽象、資源的分配和調(diào)度管理,通過協(xié)議,使得客戶端與服務(wù)端展示桌面映像。這種解決辦法存在一些弊端:
(1)離線使用問題:現(xiàn)有桌面云必須在網(wǎng)絡(luò)不中斷情況下且與服務(wù)端連接正常情況下才能使用,對于網(wǎng)絡(luò)差及隨時需要使用桌面云的場合不適用。
(2)性能問題:在客戶端用戶較多情況下,由于資源共享,服務(wù)端主機需要有足夠的CPU、內(nèi)存、存儲等資源,否則桌面云性能無法得到保障。
(3)外設(shè)兼容問題:電信營業(yè)中心的外設(shè)如打印機、掃描儀品牌和種類眾多,驅(qū)動程序問題一直都是桌面云部署的痛點。
目前,還沒有在OpenStack上的離線桌面云的成熟解決方案。考慮到以上問題,本文提出了一種離線桌面云的解決方案,將OpenStack的云計算基礎(chǔ)架構(gòu)和桌面云技術(shù)相結(jié)合,搭建一套離線桌面云系統(tǒng),用于解決桌面云不能離線斷網(wǎng)的使用場景。
本文設(shè)計的離線桌面云服務(wù)端架構(gòu)基于Open?Stack云基礎(chǔ)架構(gòu)上實現(xiàn),離線桌面云服務(wù)端架構(gòu)主要由三個大部分組成,如圖1所示。
(1)安裝部署移動終端設(shè)備,如筆記本或臺式機;桌面?zhèn)鬏攨f(xié)議采用RDP協(xié)議。
(2)離線桌面管理系統(tǒng)由虛擬桌面管理、用戶管理、策略管理、鏡像管理和調(diào)用代理模塊組成。
(3)OpenStack云基礎(chǔ)架構(gòu)環(huán)境的核心組件,包括Nova-api、Nova-compute等7大組件,組件間組合起來工作。
圖1 桌面云架構(gòu)圖
如圖1所示,虛擬桌面云系統(tǒng)的軟件架構(gòu)包括桌面的管理系統(tǒng)、服務(wù)端OpenStack組件構(gòu)成的運行環(huán)境、客戶端OpenStack運行環(huán)境組成。桌面云管理系統(tǒng)用以服務(wù)端管理;服務(wù)端OpenStack組件的運行環(huán)境主要作用就是為離線桌面的運行提供基礎(chǔ)環(huán)境??蛻舳薕penStack組件的運行環(huán)境主要作用就是為客戶端虛擬機的運行提供基礎(chǔ)環(huán)境。終端管理模塊用于從連接服務(wù)端下載鏡像并在客戶端的OpenStack平臺中創(chuàng)建虛擬機。
整體的離線桌面云管理系統(tǒng)是按照下面幾個模塊來實現(xiàn)的:
(1)桌面管理模塊,分配桌面鏡像,可按用戶組或用戶分配桌面鏡像;指定策略,在分配桌面鏡像時可指定桌面安全策略;添加、刪除、編輯、激活、鎖定、歸檔桌面。在分配桌面鏡像時需要與鏡像管理模塊進(jìn)行交互,分配指定的鏡像給用戶組及用戶。與策略管理模塊通信,對用戶及用戶組分配安全策略;
(2)用戶管理模塊,對桌面云系統(tǒng)中的用戶組、用戶、角色和權(quán)限等進(jìn)行管理,并提供用戶注冊、登錄等服務(wù)。用戶登錄的時通過用戶管理得到一個token,通過該token在OpenStack環(huán)境進(jìn)行驗證。此外存儲用戶數(shù)據(jù),用戶數(shù)據(jù)主要為用戶在客戶端虛擬機內(nèi)產(chǎn)生的業(yè)務(wù)數(shù)據(jù)提供存儲支持,以達(dá)到用戶的應(yīng)用和數(shù)據(jù)的分離的目的;
(3)調(diào)用代理模塊,代理模塊是離線桌面系統(tǒng)與外部及OpenStack運行環(huán)境接口,離線桌面系統(tǒng)通過調(diào)用代理模塊對OpenStack環(huán)境的組件發(fā)起API調(diào)用;
(4)鏡像管理模塊,制作不同的虛擬機鏡像模板,包括Windows、Linux的模板;添加、刪除、修改虛擬機鏡像模板。鏡像管理模塊通過調(diào)用代理模塊對Open?Stack環(huán)境的組件的Nova組件、Glance組件發(fā)起API調(diào)用;
(5)策略管理模塊:針對用戶及用戶組分配桌面安全策略(包括USB啟用禁用、圖像復(fù)制粘貼啟用禁用、文件及文件夾復(fù)制粘貼啟用禁用、音頻視頻設(shè)備啟用禁用)、桌面過期時間、桌面過期消息、離線訪問期限等;
(6)監(jiān)控管理:監(jiān)控系統(tǒng)管理桌面云管理平臺的運行和客戶端虛擬機的運行,一旦發(fā)生異常,發(fā)出報警;
(7)日志管理:記錄桌面云管理平臺、客戶端的運行日志、操作日志等;
(8)終端管理模塊:終端管理模塊用于從連接服務(wù)端下載鏡像并在客戶端OpenStack環(huán)境創(chuàng)建虛擬機。此外,客戶端的數(shù)據(jù)通過終端管理模塊更新安全策略信息、下載或上傳用戶數(shù)據(jù)到服務(wù)端。
依據(jù)上面介紹,本文設(shè)計了離線桌面云管理系統(tǒng)的詳細(xì)的架構(gòu),組件之間的詳細(xì)的交互關(guān)系如圖2所示。
圖2 系統(tǒng)詳細(xì)交互架構(gòu)圖
離線桌面云管理平臺運行環(huán)境為Linux,平臺實現(xiàn)采用Python語言,數(shù)據(jù)庫為MySQL。下面主要介紹調(diào)用代理模塊、用戶管理模塊、桌面管理模塊、鏡像管理模塊、策略管理模塊和客戶端桌面管理的實現(xiàn)方法。
本系統(tǒng)主要通過調(diào)用代理模塊實現(xiàn)桌面云管理平臺模塊與外部數(shù)據(jù)的交互和通訊,模塊采用了面向?qū)ο蟮脑O(shè)計模式,在調(diào)用代理模塊中主要利用了四個類,包 括 ProxyAgent、vmOpreat、ImageOpreat 和 client?Conn。類之間的交互關(guān)系如圖3所示。
圖3 調(diào)用管理模塊交互圖
vmOpreat類提供了對Nova組件進(jìn)行API調(diào)用的函數(shù),主要是操控虛擬機實例的函數(shù),包括虛擬機創(chuàng)建vmCreate、虛擬機停止vmStop、虛擬機刪除vmDelete、虛擬機暫停vmPause等函數(shù)。
ImageOpreat類提供了對Glance組件進(jìn)行API調(diào)用的函數(shù),包括操作鏡像函數(shù),鏡像的注冊ImageRegis?try、鏡像的上傳 ImageGet和下載、ImagePut、鏡像元數(shù)據(jù)的更改ImageModi、虛擬機的快照vmSnap等操作。
clientConn類中,負(fù)責(zé)用戶驗證的接口,包括用戶的登錄驗證、鏡像的下載、策略的更新、用戶數(shù)據(jù)的上傳下載等。
在調(diào)用代理模塊中,主要存在了三個主線程。分別為:
(1)OpenStack Nova組件接口。該線程主要負(fù)責(zé)發(fā)送API調(diào)用給OpenStack Nova組件,調(diào)用OpenStack組件的服務(wù),主要為桌面管理模塊的接口。
(2)OpenStack Glance組件接口。該線程主要負(fù)責(zé)發(fā)送API調(diào)用給OpenStack Glance組件,調(diào)用Open?Stack組件的服務(wù),主要為鏡像管理模塊的接口。
(3)客戶端接口。該接口是負(fù)責(zé)接受用戶連接的線程池。用戶通過該模塊連接用戶管理模塊,進(jìn)行用戶的驗證、鏡像的下載、策略的更新、用戶數(shù)據(jù)的上傳下載等。
用戶管理模塊主要通過兩個類來實現(xiàn),包括userAPI類、和User類。類圖如圖4所示。
圖4 用戶管理模塊交互圖
userAPI類提供了用戶的注冊、用戶的登錄、獲得用戶桌面、同步桌面等函數(shù)。在該模塊中,用戶的驗證方式是客戶端通過keystone組件的用戶進(jìn)行訪問認(rèn)證,從而獲取通過驗證時所得到的認(rèn)證token來訪問OpenStack組件等后續(xù)操作。
如果用戶已經(jīng)注冊,userInfoList類用于調(diào)用桌面管理模塊來查詢該用戶擁有的桌面模板、安全策略等信息。User類主要記錄了該用戶的一些屬性信息。
桌面管理模塊主要有兩個核心的類,分別為desk?DisAPI、deskManageAPI、deskInfo。這三個類的類圖如5所示。
圖5 桌面管理模塊交互圖
deskDisAPI類提了桌面分配,deskManageAPI提供了桌面管理的API函數(shù),deskInfo主要記錄了該桌面的一些屬性信息,包括鏡像信息、安全策略信息。
鏡像管理模塊主要有兩個核心的類,分別為im?ageAPI和imageInfo。這兩個類的類圖如圖6所示。
圖6 鏡像管理模塊交互圖
imageAPI類提供給用戶操作的鏡像的API函數(shù),包括鏡像添加、刪除和修改函數(shù);由于imageOpreat類繼承imageAPI類,用戶執(zhí)行imageAPI中的函數(shù)的同時,其實也是執(zhí)行imageOpreat類中的函數(shù)。imageInfo主要記錄了該鏡像的一些屬性信息。
客戶端管理模塊主要有兩個核心的類,分別為cli?entManageAPI、vmOpreat、clientInfo。這四個類的類圖如圖7所示。
圖7 客戶端桌面管理模塊交互圖
clientManageAPI類提供給用戶操作的API函數(shù),包括桌面鏡像下載、用戶數(shù)據(jù)的恢復(fù)和備份、用戶安全策略等;vmOpreat類提供給對客戶端OpenStack的No?va組件進(jìn)行API調(diào)用的函數(shù),主要包括操作虛擬機的實例的函數(shù),clientInfo記錄客戶端桌面的信息,包括安全策略信息。
用戶使用桌面云的訪問流程,如圖8:
(1)用戶通過客戶端提出訪問申請,在客戶端輸入桌面云服務(wù)器地址、賬號和密碼,無該用戶虛擬桌面會提示下載鏡像模板,創(chuàng)建虛擬機;有該用戶虛擬桌面會更新桌面策略、桌面應(yīng)用的信息;
(2)訪問申請傳送至桌面云管理平臺,桌面云管理平臺中的用戶管理模塊處理用戶的訪問申請,判斷訪問是否有效;
(3)當(dāng)判斷訪問無效時,將無效信息反饋至客戶端,提醒客戶輸入正確的登錄信息;
(4)當(dāng)訪問有效時,用戶管理系統(tǒng)分配用戶的桌面資源信息,包括桌面鏡像模板、安全策略信息等;
(5)鏡像管理模塊根據(jù)用戶信息下發(fā)鏡像模板;
(6)客戶端下載鏡像模板,創(chuàng)建虛擬機、更新桌面應(yīng)用信息、策略信息,虛擬機創(chuàng)建完成并重啟后就可以訪問桌面云;
(7)此外,用戶可以上傳用戶數(shù)據(jù)至桌面云管理平臺以保存用戶數(shù)據(jù)。
圖8 桌面交付流程圖
本文首先介紹了桌面云技術(shù)的意義及其面臨的問題,然后對于離線桌面云,在基于OpenStack組件開發(fā)基礎(chǔ)上提出了自己的整體系統(tǒng)架構(gòu)設(shè)計和整個系統(tǒng)組件的交互方式。同時,簡要描述了離線桌面云各個模塊的實現(xiàn)方法,包括代理模塊、用戶模塊、桌面管理模塊和鏡像管理模塊等。最后,對離線桌面云系統(tǒng)的桌面交付流程進(jìn)行了闡述,對于在OpenStack組件開發(fā)及同類產(chǎn)品具有一定的借鑒意義。