孫 磊,沈蘇彬
(南京郵電大學 計算機學院,江蘇 南京 210003)
一種基于OpenStack的云管理平臺
孫 磊,沈蘇彬
(南京郵電大學 計算機學院,江蘇 南京 210003)
當今,云計算已經成為計算機應用研究領域的一大熱點。OpenStack是當前具有代表性的開源云計算平臺之一,但現有的OpenStack管理技術依然存在著以下不足:對于平臺中的各種計算資源缺乏相應的監測功能;OpenStack集群的擴展依賴人工的部署配置,易出錯且效率低。為解決和優化OpenStack平臺在管理技術方面的不足,文中在OpenStack開源平臺的基礎上,利用Java Web、自動化腳本控制、異步通信等開發技術,設計了一套云管理平臺。結合OpenStack本身提供的豐富API,可以實現對平臺資源基本管理操作,同時針對集群擴展和資源監測功能的不足,設計了相應的開發解決方案。實驗結果表明,對OpenStack平臺管理方面的優化具有一定效果,可以有效提升OpenStack云平臺的管理效率。
OpenStack;云管理;監控;集群擴展
隨著當今信息技術的高速發展,云計算已經成為一個重要熱點和趨勢。云計算基于虛擬化技術,由大量物理計算機以及其他硬件組成計算資源池,提供給用戶按需的計算能力、存儲能力、網絡服務等[1]。
當今開源IaaS云計算平臺有OpenStack,AbiCloud,Nimbus,Eucalyputs,CloudStack,OpenNebula等一些解決方案[2]。其中OpenStack無疑是發展最為迅速的一支,它由美國國家航天局NASA和Rackspace共同開發,作為一款自由開源的軟件,企業和用戶都可以使用其構建自身的IaaS(Infrastructure as a Service)服務,具有高擴展性以及部署靈活的特點,可以實現對企業資源的整合和高效利用[3]。
IaaS基礎設施即服務層是云計算架構的核心,它提供給用戶對包括CPU、內存、存儲、網絡等計算資源的使用,有效減輕了IT運維的成本和復雜性[4]。云計算架構具有分布式、跨網絡、資源種類多的特點,隨之而來為資源管理方面帶來了前所未有的挑戰,相比于傳統服務器集群架構,除了對Web服務器、應用服務器等物理資源的管理,還需要對CPU、內存、存儲、網絡、虛擬機等虛擬資源的統一管理[5]。監控管理和彈性擴展是云管理平臺的重要組成部分[6],作為一個不斷發展成熟的開源項目,OpenStack在這兩部分目前存在一定的缺失和優化的空間。基于OpenStack提供的豐富API接口,基于OpenStack平臺進行二次開發,對其相關管理技術進行優化,具有一定的研究意義和實用價值。
對資源和服務的有效管理是云計算交付過程中的一個核心要求[7]。根據云計算架構層次劃分可以分為硬件平臺管理、虛擬化平臺管理、中間件管理、應用管理等,根據功能對象的不同可以分為用戶管理、存儲管理、網絡管理、計算管理等[4]。當前OpenStack平臺包含的管理功能主要包括:
計算管理(Nova):提供對虛擬機的生命周期管理;
卷存儲管理(Cinder):提供塊存儲服務及管理;
認證管理(Keystone):提供統一的授權和身份驗證管理服務;
鏡像管理(Glance):提供虛擬機鏡像的上傳以及存儲管理;
網絡管理(Neutron):提供對平臺網絡資源的管理[8]。
根據云計算的五個特征定義,一個云計算平臺應該包含按需服務、廣泛接入、資源池管理、彈性擴展、計量服務五個特征[9],當前OpenStack平臺在按需服務、廣泛接入、資源池管理這三個方面均有比較成熟的實現,然而在彈性擴展和計量服務方面,OpenStack依然存在著一定的缺失和待優化的空間,其中包括資源監測和集群擴展兩個方面。
資源監測是云計算管理技術中的主要環節,其為云平臺提供即時的預警處理,同時也是計費和故障恢復等操作的前提。監測對象主要包括物理機和虛擬機的CPU、內存、存儲、網絡、磁盤等性能數據以及云平臺服務組件啟停、異常信息的捕獲[10],基于獲取到的性能監測數據,可以引導用戶或者管理人員進行相關的資源調配、容錯處理、動態遷移等操作,實現動態的負載均衡,彈性計算和資源高效利用。OpenStack平臺并沒有提供完整成熟的資源監測模塊,從OpenStack Grizzly版本開始,加入了監控模塊Ceilometer,但這個模塊并不成熟,需要其他插件的支持,還不能投入到應用場景中,需要自己開發資源監測模塊。
可伸縮性表示云計算對于資源靈活調配和高效利用的能力[11]。在IaaS層物理硬件資源不足的情況下,需要對OpenStack物理服務器集群進行擴展,通常的方式是利用物理服務器部署OpenStack相關服務并加入到OpenStack服務器集群中,實現IaaS層硬件資源池的擴充。OpenStack節點的部署,涉及多種軟件安裝和配置調試,較為繁瑣復雜,人工部署低效而且易出錯[12]。針對在人工方式下OpenStack集群擴展的低效和易錯性,以OpenStack節點的自動部署功能為核心,為OpenStack添加自動化的集群擴展功能模塊,可以提高云平臺彈性擴展的效率[10]。
云管理平臺為OpenStack各個服務組件和多種計算資源提供了統一的管理接口,同時為上層的PaaS平臺服務提供所需要的計算資源,總體架構見圖1。

圖1 云管理平臺總體架構
云管理平臺主要包含以下功能模塊:
資源創建:該模塊通過調用OpenStack提供的Rest API來實現OpenStack平臺各種計算資源的創建,如虛擬機、網絡、存儲等。
資源管理:該模塊為IaaS層每種資源提供方便、快捷、有效的管理。管理員可以方便地對各種資源進行增刪改查等操作。
安全管理:該模塊提供給用戶針對TCP、ICMP、UDP等多種協議創建多種訪問規則。
資源監測:該模塊提供對物理機和虛擬機CPU、內存、存儲、網絡四類資源性能指標的檢測,同時對OpenStack的各個節點上服務組件運行狀況進行監測。
消息管理:IaaS層的運行消息被記錄在云平臺的消息管理模塊中,對各種虛擬資源的操作進行了反饋,使得管理員可以方便地進行問題追蹤。
集群擴展:集群擴展模塊提供自動部署OpenStack節點,實現OpenStack集群擴展的功能。管理員只需配置所要添加物理機的相關信息。
針對OpenStack集群擴展功能的設計方案如下:云管理平臺接收添加節點的請求后,建立與目標節點之間的連接,然后將位于控制節點的節點部署所需要的軟件包下載到目標節點并解壓,在從控制節點下載執行部署所需要的一系列自動腳本程序,完成OpenStack節點的部署并添加到OpenStack集群中。集群擴展功能的流程圖見圖2。

圖2 集群擴展流程
(1)管理員向管理平臺發送添加節點請求。
(2)根據配置信息中的IP地址和root賬號信息,管理平臺向目標主機發送建立連接請求。
(3)目標主機接收請求,建立連接。
(4)云管理平臺向OpenStack控制節點發送創建節點信息。
(5)目標節點從控制節點下載相關軟件包。
(6)目標節點解壓軟件包。
(7)目標節點下載安裝腳本,進行自動的安裝配置工作。
(8)目標節點進行自動的服務更新,完成OpenStack節點的部署工作。
(9)部署節點更新集群數據庫信息,同時向管理平臺發送信息反饋。
(10)管理平臺將添加OpenStack集群節點的反饋信息呈現給管理員。
資源監測功能模塊負責對OpenStack平臺中多種計算資源的性能數據進行監測,獲取,并將數據信息持久化到監測數據庫中。資源監測的功能結構見圖3。

圖3 資源監測功能結構
主要包括:
Monitor Collector:Monitor Collector是一個守護進程,用來對虛擬機、物理機、服務的狀態信息進行采集,并發送給Monitor Controller,監測信息管理模塊。
Heartbeat機制:心跳機制用來定時獲取監測的性能數據信息。Monitor Collector每隔一段時間對物理機、虛擬機和服務進行數據采集。
Monitor Controller:Monitor Controller對Monitor Collector收集到的資源性能數據信息進行相應管理,一方面將數據信息發送給云管理平臺提供實時監測,一方面將監測信息數據持久化到監測數據庫中。
云管理平臺基于Java語言開發,使用JavaScript開發框架Dojo以及j2ssh等開發包,基于OpenStack提供的RestAPI實現基本操作功能,然后編程實現資源監測和集群擴展兩個功能模塊,下面介紹這兩個功能模塊的實現。
基于上一節中的集群擴展設計方案,下面介紹集群擴展功能的實現算法,流程如圖4所示。

圖4 集群擴展算法流程圖
(1)在云管理平臺提交添加節點的請求表單,所需的數據主要包括節點的IP地址、用戶名和密碼。
(2)根據提交的IP地址和管理賬戶資源,嘗試與目標主機進行連接,連接失敗提示未發現節點的信息。
(3)檢查目標主機名是否已存在主機池中,即已經包含在OpenStack集群中,已包含則提示已包含的信息,否則將主機加入到主機池,繼續添加工作。
(4)目標節點獲取控制節點的相關信息,建立與控制節點的連接,從控制節點下載軟件、相關依賴包以及自動安裝腳本到本地。
(5)目標節點解壓安裝包,并執行自動部署腳本完成安裝和部署工作。
(6)完成節點的自動部署,將目標節點添加到OpenStack集群中,并更新數據庫的信息。
資源監測的對象主要包括物理機、虛擬機和OpenStack服務組件,下面對這三部分的實現進行介紹:
物理機監測的實現是利用SHELL腳本采集各種資源的狀態信息,主要命令實例如下:
(1)功能命令:獲取磁盤速率。
命令描述:LANG=C;export LANG;iostat -d -k 1 1 | grep 'sda|sdb|sdc|sdd|sde|vda|vdb|vdc|vdd|vde' | awk {'print $1,$2'}
實現原理:利用linux的iostat命令獲取物理機磁盤的讀寫速率。
(2)功能命令:獲取磁盤使用率。
命令描述:LANG=C;export LANG;df -k | awk '{print "DATA_START",$3,$4,$5,$6,"DATA_END"}'| grep '/ DATA_END'
實現原理:利用linux的df命令獲取物理機磁盤使用率。
(3)功能命令:獲取內存使用率。
命令描述:LANG=C;export LANG;total=`cat /proc/meminfo|grep "MemTotal:"|awk '{print $2}'`;free=`cat /proc/meminfo | grep "MemFree:"|awk '{print $2}'`;echo $total $free|awk '{printf("DATA_START %0.2f DATA_END",((100-100*$2/$1)))}'
實現原理:獲取linux文件系統下/proc/meminfo中保存的與內存相關的信息,經過計算得出內存使用率。
(4)功能命令:獲取CPU使用量。
命令描述:LANG=C;export LANG;vmstat | tail -1 | awk '{print "DATA_START",(100-$15),"DATA_END"}'
實現原理:利用linux的vmstat命令獲取物理機CPU使用量。
虛擬機監測的實現是利用Libvirt虛擬化管理庫,建立與虛擬機的連接,然后調用API來獲取虛擬機各種性能狀態數據信息,主要的代碼實現過程如下:
(1)獲取和虛擬機的連接。
conn=new Connect("qemu+tcp://" + hostIp + "/system");
(2)根據虛擬機Id,探測各個虛擬機的詳細信息。
for (int activeDomId : conn.listDomains()) {hq=new HostQuota();Domain domain=conn.domainLookupByID(activeDomId);
(3)調用Libvirt相應的API,獲取各種性能數據狀態域信息。
獲取內存狀態信息域:
MemoryStatistic[] ms=domain.memoryStats(5);
獲取網絡狀態信息域:
DomainInterfaceStats dis=domain.interfaceStats(net);
(4)計算資源利用率,根據獲取到的性能數據信息,可以計算相應資源利用率。以CPU利用率為例,原理是利用api返回CPU時間,在極短時間內,獲取兩次CPU時間,根據差值計算CPU使用率。
服務組件監測的實現是通過調用OpenStack相關的API獲得相關服務組件信息,監測OpenStack集群中各節點上服務組件的運行狀態,當服務停止或出錯時判定該節點從OpenStack集群中斷線。
4.1 測試環境
(1)構建OpenStack云平臺,測試環境基于Vmware10虛擬化軟件,由三個Vmware虛擬機組成的OpenStack集群,分別作為控制節點、計算節點和存儲節點。OpenStack節點配置見表1。

表1 OpenStack平臺概況
(2)部署云管理平臺,云管理平臺部署在OpenStack計算節點,首先安裝JDK和Tomcat服務器,然后將云管理平臺軟件包解壓到應用目錄下。
4.2 功能測試和結果分析
首先對云管理平臺的集群擴展功能進行測試,以IP地址為192.168.1.202的主機為測試對象,在云管理平臺中選擇自動添加主機功能,主機添加完畢后,在OpenStack的控制節點使用nova-manage service list指令對當前OpenStack集群進行檢測,其作用是列出當前OpenStack集群中所有節點上Nova相關服務組件的運行情況,可以觀察到目標主機上的Nova服務模塊正常啟動,目標主機已經加入到OpenStack集群中,可以驗證集群擴展功能的可行性。
然后對資源監測功能進行測試,登錄到資源監測界面,選擇測試環境中的計算節點作為測試對象,獲取監測信息數據,成功獲取到CPU使用率、內存使用率、網口接收發送速率、磁盤讀寫速率的性能變化曲線。
最后選取七種典型的云計算管理功能,同時對云管理平臺和其他兩種OpenStack管理平臺:OpenStack-Horizon和Mirantis-Fuel進行整體功能測試。測試結果對比見表2,在表中“√”表示該平臺對此項功能成功實現,“×”表示未實現。

表2 云管理平臺整體功能測試
通過表2可以發現,云管理平臺對七種管理功能均完成了實現,OpenStack-Horizon缺乏資源監測和集群擴展功能;Mirantis-Fuel缺乏對虛擬資源的管理功能。
綜上所述,云管理平臺為OpenStack平臺提供了比較成熟的管理框架,并實現了一定的管理方面的優化,具有一定的應用價值和實踐意義。
文中通過對云計算管理和開發技術的深入研究和分析,設計了基于OpenStack的云管理平臺。在OpenStack平臺基本管理操作的基礎上,設計開發了資源監測和集群擴展功能模塊。通過相關測試,驗證了云管理平臺在資源管理、資源監測和集群擴展功能方面具有一定的先進性和應用價值。未來,可以對云平臺的高可用性管理、容錯處理等進行進一步的優化和研究。
[1] Armbrust M,Fox A,Griffith R,et al.A view of cloud computing[J].Communications of the ACM,2010,53(4):50-58.
[2] Rimal B P,Choi E,Lumb I.A taxonomy and survey of cloud computing systems[C]//Proc of fifth international joint conference on INC,IMS and IDC.[s.l.]:[s.n.],2009:44-51.
[3] Feller E,Rilling L,Morin C.Snooze:a scalable and autonomic virtual machine management framework for private clouds[C]//Proceedings of the 2012 12th IEEE/ACM international symposium on cluster,cloud and grid computing.[s.l.]:IEEE Computer Society,2012:482-489.
[4] Sotomayor B,Montero R S,Llorente I M,et al.Virtual infrastructure management in private and hybrid clouds[J].IEEE Internet Computing,2009,13(5):14-22.
[5] VMware Inc.VMware vSphere,the first cloud operating system,provides an evolutionary,non-disruptive path to cloud computing[M].[s.l.]:VMware Inc,2009.
[6] Bellavista P,Giannelli C,Mattetti M.A practical approach to easily monitoring and managing IaaS environments[C]//Proc of IEEE symposium on computers and communications.[s.l.]:IEEE,2013.
[7] Wibowo E.Cloud management and automation[C]//Proc of joint international conference on rural information & communication technology and electric-vehicle technology.[s.l.]:IEEE,2013:1-4.
[8] Liu X,Qiu X,Xie X,et al.Implement of a light-weight integrated virtualized environment manager for private cloud computing[C]//Proc of international conference on computer science & service system.[s.l.]:IEEE,2012:523-526.
[9] Zhang Z,Zhou W,Qian L,et al.CloudMaster:a cloud computing management system of BigCloud[C]//Proc of OCS.[s.l.]:IEEE,2012:40-42.
[10] Clay R W,Wild N R,Bird D J,et al.A cloud monitoring system for remote sites[J].Publications of the Astronomical Society of Australia,1998,15(3):332-335.
[11] Forell T,Milojicic D,Talwar V.Cloud management:challenges and opportunities[C]//Proc of IEEE international symposium on parallel and distributed processing workshops.[s.l.]:IEEE,2011:881-889.
[12] Morariu O,Borangiu T,Morariu C.Multi-layer QoS monitoring in private clouds[C]//Proc of 24th international workshop on database and expert systems applications.[s.l.]:IEEE,2013:236-240.
A Cloud Management Platform Based on OpenStack
SUN Lei,SHEN Su-bin
(College of Computer,Nanjing University of Posts and Telecommunications,Nanjing 210003,China)
Cloud computing management technology is an important direction in the research of cloud computing in recent years,represented by OpenStack,one of open source cloud computing platforms,has achieved rapid development.But at present it still exists some shortages in cloud management technology of OpenStack,for all kinds of computing resources in the platform,it lacks corresponding monitoring management;the expansion of OpenStack clusters rely on artificial deployment configuration with error-prone and low efficiency.In this paper,on the basis of OpenStack,a cloud management platform was designed by Java Web,automatic control and asynchronous communication and other development technologies,to solve and optimize the defect for OpenStack in management technology.Combined with kinds of API provided by OpenStack,realize the basic management operation for platform resources,at the same time,aiming at the shortcomings of the cluster expansion and resource monitoring function,design the corresponding development solutions.Experimental results show that there are some effects on the optimization of the platform management,the management efficiency for OpenStack cloud platform can be improved effectively.
OpenStack;cloud management;monitor;cluster expansion
2015-02-27
2015-06-10
時間:2016-01-04
江蘇省未來網絡前瞻性研究資助項目(BY2013095-1-08)
孫 磊(1990-),男,碩士,研究方向為云計算應用技術;沈蘇彬,研究員,研究方向為計算機應用技術。
http://www.cnki.net/kcms/detail/61.1450.TP.20160104.1607.068.html
TP31
A
1673-629X(2016)01-0185-05
10.3969/j.issn.1673-629X.2016.01.040