謝浩安 張國強(qiáng) 陳琴
摘要:該文提出了一種新云操作系統(tǒng)的虛擬化層連接方法,通過對云操作系統(tǒng)的虛擬化層的連接實(shí)行池化管理,形成連接池負(fù)責(zé)SSH連接生命周期的管理,SSH連接創(chuàng)建以后云操作系統(tǒng)以共享的方式使用SSH連接,使用完后歸還給連接池而不是關(guān)閉SSH連接,下次指令調(diào)用還可以復(fù)用,減少云操作系統(tǒng)對虛擬化層連接打開和關(guān)閉的次數(shù)。
關(guān)鍵詞:云操作系統(tǒng);虛擬化層;連接池;池化管理;SSH
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)17-0037-02
1概述
隨著互聯(lián)網(wǎng)時(shí)代的信息與數(shù)據(jù)的快速增長,現(xiàn)代信息化建設(shè)對信息量的規(guī)?;幚砑癐T架構(gòu)的靈活擴(kuò)展要求越來越高,傳統(tǒng)的IT架構(gòu)動(dòng)態(tài)擴(kuò)展性差、IT資源利率低及信息化建設(shè)的投人成本高等制約了現(xiàn)代信息化的發(fā)展。在這種情況下,為了快速實(shí)現(xiàn)IT架構(gòu)的可擴(kuò)展性及節(jié)約建設(shè)成本,云計(jì)算的概念被提了出來。云計(jì)算是基于互聯(lián)網(wǎng)的計(jì)算,能夠向各種互聯(lián)網(wǎng)應(yīng)用提供硬件服務(wù)、基礎(chǔ)架構(gòu)服務(wù)、平臺服務(wù)、軟件服務(wù)、存儲(chǔ)服務(wù)等的一種新型的服務(wù)計(jì)算模型。
云操作系統(tǒng)是以云計(jì)算、云存儲(chǔ)技術(shù)作為支撐的操作系統(tǒng),是云計(jì)算數(shù)據(jù)中心的整體管理運(yùn)營系統(tǒng)。它構(gòu)架在服務(wù)器、存儲(chǔ)、網(wǎng)絡(luò)等基礎(chǔ)硬件資源和服務(wù)器操作系統(tǒng)、中間件、數(shù)據(jù)庫等基礎(chǔ)軟件之上的、管理海量的基礎(chǔ)硬件、軟件資源的云平臺綜合管理系統(tǒng)。同時(shí),云操作系統(tǒng)能夠計(jì)算能夠?qū)崿F(xiàn)對各類異構(gòu)軟硬件基礎(chǔ)資源的兼容,更要實(shí)現(xiàn)資源的動(dòng)態(tài)流轉(zhuǎn)。在一個(gè)綠色云的框架中,虛擬機(jī)的高度與管理是綠色云數(shù)據(jù)中心的重要組成部分。那么,云操作系統(tǒng)要求實(shí)現(xiàn)對虛擬機(jī)的快速安全認(rèn)證和連接,從而保證云操作系統(tǒng)對虛擬機(jī)的調(diào)度、遷移等一系列的工作。SSH(Secure Shell)協(xié)議專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議,它是一種在兩個(gè)主機(jī)之間通加密和身份驗(yàn)證機(jī)制提供安全連續(xù)的協(xié)議。
2云操作系統(tǒng)的虛擬化層連接現(xiàn)狀分析
2.1現(xiàn)有云操作系統(tǒng)與虛擬化層連接的方法
當(dāng)前在云操作系統(tǒng)中通常需要通過SSH協(xié)議連接到虛擬化層(Hypervisor)完成對虛擬機(jī)的管理和任務(wù)調(diào)度。例如云操作系統(tǒng)響應(yīng)一個(gè)用戶對自己虛擬機(jī)的開機(jī)指令或者是云操作系統(tǒng)自身根據(jù)策略發(fā)起的虛擬機(jī)遷移任務(wù)等,云操作系統(tǒng)都需要打開一個(gè)到虛擬化層的SSH會(huì)話,通過SSH向虛擬化層發(fā)送操作指令,執(zhí)行完指令之后再將SSH會(huì)話關(guān)閉。
如圖1所示,云操作系統(tǒng)向虛擬化層發(fā)送一次指令調(diào)用共包含6個(gè)步驟:
1)版本號協(xié)商,若當(dāng)前SSH包括了SSH1和SSH2兩個(gè)版本,那么雙方通過版本協(xié)商來確定使用的版本;
2)密鑰和算法協(xié)商,SSH支持多種加密算法,雙方根據(jù)本端和對端支持的算法,協(xié)商出最終使用的算法;
3)安全認(rèn)證,客戶端向服務(wù)器端發(fā)起認(rèn)證請求,服務(wù)器端對客戶端進(jìn)行認(rèn)證;
4)會(huì)話請求階段,認(rèn)證通過后,客戶端向服務(wù)器端發(fā)送會(huì)話請求;
5)交互會(huì)話階段,會(huì)話請求通過后,服務(wù)器端和客戶端進(jìn)行信息的交互;
6)關(guān)閉會(huì)話,完成信息交互后,斷開會(huì)話連接。
由上述步驟可知,云操作系統(tǒng)對虛擬化層的每次指令調(diào)用都要通過1至4過程建立SSH會(huì)話,在第5階段發(fā)送指令,之后關(guān)閉SSH會(huì)話連接。
2.2當(dāng)前的連接方式存在的問題
根據(jù)上文的云操作系統(tǒng)與虛擬化層的連接方法分析,可知當(dāng)前的連接方式存在以下問題:
1)云操作系統(tǒng)通過SSH連接發(fā)出的每一條指令都需要打開和關(guān)閉一次SSH連接,由于SSH連接不能共享,在一個(gè)大規(guī)模的云平臺中會(huì)造成比較大的額外開銷;
2)在并發(fā)訪問比較大的情況下,在虛擬化層打開過多的SSH連接會(huì)影響虛擬化層的性能,從而影響上層虛擬機(jī)業(yè)務(wù)系統(tǒng)的運(yùn)行;
3)在虛擬化層SSH連接數(shù)達(dá)到上限后,云操作系統(tǒng)發(fā)出的SSH調(diào)用指令會(huì)因?yàn)闊o法連接而造成指令失效。
那么,針對目前存在的問題,本文提出一種云操作系統(tǒng)的虛擬化層連接方法及裝置,其能解決頻繁打開和關(guān)閉SSH連接的問題,其設(shè)計(jì)如下文。
3一種虛擬化層連接方法設(shè)計(jì)
3.1虛擬化層連接方法
根據(jù)云操作系統(tǒng)提供的虛擬化層的唯一識別碼,在連接池中查找與所述唯一識別碼對應(yīng)的連接隊(duì)列;其中,所述連接池具有虛擬化層的唯一識別碼與連接隊(duì)列的關(guān)聯(lián)信息,所述連接隊(duì)列具有預(yù)設(shè)數(shù)量的SSH連接。
如上圖所示,判斷所述連接隊(duì)列中是否存在空閑的SSH連接,若是,則將所述空閑的SSH連接分配給云操作系統(tǒng)使用;若否,則進(jìn)一步判斷所述連接隊(duì)列的SSH連接的數(shù)量是否已達(dá)到預(yù)設(shè)的最大數(shù)量,若是,則阻塞等待,直到有空閑的SSH連接分配給云操作系統(tǒng)使用,若否,則創(chuàng)建一個(gè)新的SSH連接分配給云操作系統(tǒng)使用。本文提出的連接方法,還將優(yōu)先處理如下步驟如下:
1)將已分配給云操作系統(tǒng)使用的SSH連接標(biāo)記為已分配;將空閑的SSH連接和云操作系統(tǒng)使用完畢歸還給連接池的SSH連接均標(biāo)記為可分配。
2)根據(jù)預(yù)設(shè)的時(shí)間間隔,檢查連接隊(duì)列中所有SSH連接的狀態(tài),將無效的SSH連接刪除,并創(chuàng)建有效的SSH連接加入到對應(yīng)的連接隊(duì)列中。
3)根據(jù)預(yù)設(shè)的時(shí)間間隔,檢查虛擬化層的網(wǎng)絡(luò)連接狀態(tài),若虛擬化層的網(wǎng)絡(luò)連接狀態(tài)異常,則將與發(fā)生網(wǎng)絡(luò)連接狀態(tài)異常的虛擬化層對應(yīng)的連接隊(duì)列刪除,當(dāng)發(fā)生網(wǎng)絡(luò)連接狀態(tài)異常的虛擬化層重啟后,創(chuàng)建對應(yīng)的連接隊(duì)列。
4)根據(jù)預(yù)設(shè)的時(shí)間間隔,檢查虛擬化層的SSH服務(wù)狀態(tài),若虛擬化層的SSH服務(wù)狀態(tài)異常,則將與發(fā)生SSH服務(wù)狀態(tài)異常的虛擬化層對應(yīng)的SSH連接刪除。
3.2連接池的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
云操作系統(tǒng)向連接池發(fā)送獲取SSH連接請求,所述獲取SSH連接請求包括與云操作系統(tǒng)需要操作的虛擬化層對應(yīng)的唯一識別碼(UUID)。
所述連接池具有虛擬化層的唯一識別碼與連接隊(duì)列的關(guān)聯(lián)信息,所述連接隊(duì)列具有預(yù)設(shè)數(shù)量的SSH連接。例如,初始化時(shí),連接隊(duì)列中,SSH連接的數(shù)量為4個(gè)。
根據(jù)云操作系統(tǒng)提供的虛擬化層的唯一識別碼,在連接池中查找與所述唯一識別碼對應(yīng)的連接隊(duì)列。
判斷所述連接隊(duì)列中是否存在空閑的SSH連接(即是否具有標(biāo)記為可分配的SSH連接),若是,則將所述空閑的SSH連接分配給云操作系統(tǒng)使用;若否,則進(jìn)一步判斷所述連接隊(duì)列的SSH連接的數(shù)量是否已達(dá)到預(yù)設(shè)的最大數(shù)量(例如,最大數(shù)量設(shè)定為6個(gè)),若是,則阻塞等待,直到有空閑的SSH連接分配給云操作系統(tǒng)使用,若否,則創(chuàng)建一個(gè)新的SSH連接分配給云操作系統(tǒng)使用。
云操作系統(tǒng)分配到可用的SSH連接后,向虛擬化層發(fā)送調(diào)用指令,所述虛擬化層返回指令結(jié)果,以完成對所述虛擬化層的操作。當(dāng)云操作系統(tǒng)對所述虛擬化層操作完畢后,向連接池歸還SSH連接。
在上述過程中,將已分配給云操作系統(tǒng)使用的SSH連接標(biāo)記為已分配;將空閑的SSH連接和云操作系統(tǒng)使用完畢歸還給連接池的SSH連接均標(biāo)記為可分配,以使下次調(diào)用SSH連接時(shí),可以根據(jù)標(biāo)記進(jìn)行相應(yīng)操作。
為了保證SSH連接的有效性,在上述過程中,還可以啟動(dòng)一個(gè)線程,根據(jù)預(yù)設(shè)的時(shí)間間隔(如2秒)進(jìn)行如下檢查:檢查連接隊(duì)列中所有SSH連接的狀態(tài),將無效的SSH連接刪除,并創(chuàng)建有效的SSH連接加入到對應(yīng)的連接隊(duì)列中;檢查虛擬化層的網(wǎng)絡(luò)連接狀態(tài),若虛擬化層的網(wǎng)絡(luò)連接狀態(tài)異常,則將與發(fā)生網(wǎng)絡(luò)連接狀態(tài)異常的虛擬化層對應(yīng)的連接隊(duì)列刪除,當(dāng)發(fā)生網(wǎng)絡(luò)連接狀態(tài)異常的虛擬化層重啟后,創(chuàng)建對應(yīng)的連接隊(duì)列,網(wǎng)絡(luò)連接狀態(tài)的檢查,可以采用發(fā)送ICMP包的方式進(jìn)行探測,若發(fā)送的ICMP包沒有返回?cái)?shù)據(jù),則判斷為異常;檢查虛擬化層的SSH服務(wù)狀態(tài),若虛擬化層的SSH服務(wù)狀態(tài)異常,則將與發(fā)生SSH服務(wù)狀態(tài)異常的虛擬化層對應(yīng)的SSH連接刪除,SSH服務(wù)狀態(tài)的檢查,可以采用發(fā)送空白指令的方式,如果空白指令調(diào)用失敗,則判斷為異常。
4結(jié)論
本文通過對云操作系統(tǒng)的連接池的池化,實(shí)現(xiàn)連接池負(fù)責(zé)SSH連接生命周期的管理。在SSH連接創(chuàng)建以后云操作系統(tǒng)以共享的方式使用SSH連接,使用完后歸還給連接池而不是關(guān)閉SSH連接,下次指令調(diào)用還可以復(fù)用,大大減少了云操作系統(tǒng)對虛擬化層SSH連接打開和關(guān)閉的次數(shù),從而有效控制云操作系統(tǒng)對虛擬化層SSH的連接數(shù)量,降低了對虛擬化層和上層虛擬機(jī)業(yè)務(wù)系統(tǒng)的影響,避免了因?yàn)樘摂M化層SSH連接用盡而造成的調(diào)用指令失效。