謝智明
?
云計算平臺的設計與實踐
謝智明
(湖南科技學院 電子與信息工程學院,湖南 永州 425199)
文章介紹了云計算的概念,分析了構建云計算平臺的商業主流產品,詳細地闡述了云計算平臺的設計和搭建過程。
云計算平臺;商業主流產品
云計算是一種能夠通過網絡以便利的、按需付費的方式獲取計算資源(包括網絡、服務器、存儲、應用和服務等)并提高其可用性的模式,這些資源來自一個共享的、可配置的資源池,并能夠以最省力和無人干預的方式獲取和釋放[1]。
云計算的三個服務模式(Delivery Models)即:SaaS、PaaS和IaaS。
(1)SaaS:提供給客戶的服務是運營商運行在云計算基礎設施上的應用程序,用戶可以在各種設備上通過瘦客戶端界面訪問,如瀏覽器。消費者不需要管理或控制任何云計算基礎設施,包括網絡、服務器、操作系統、存儲,等等。
(2)PaaS:提供給消費者的服務是把客戶采用提供的開發語言和工具(例如Java、python、.Net等)開發的或收購的應用程序部署到供應商的云計算基礎設施上。客戶不需要管理或控制底層的云基礎設施,包括網絡、服務器、操作系統、存儲等,但客戶能控制部署的應用程序,也可能控制運行應用程序的托管環境配置。
(3)IaaS: 提供給消費者的服務是對所有設施的利用,包括處理、存儲、網絡和其他基本的計算資源,用戶能夠部署和運行任意軟件,包括操作系統和應用程序。消費者不管理或控制任何云計算基礎設施,但能控制操作系統的選擇、儲存空間、部署的應用,也有可能獲得有限制的網絡組件(例如,防火墻、負載均衡器等)的控制。
Eucalyptus (Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems)是Amazon EC2的一個開源云計算平臺,Eucalyptus是加利福尼亞大學(Santa Barbara)為進行云計算研究而開發的,它與商業服務接口兼容。Eucalyptus是基于網格計算的基礎和思路發展而來的,基于網格或HPC的系統是由下而上發展成為云計算系統的。Eucalyptus依賴于Linux和Xen進行操作系統虛擬化[2]。
在商用化的云計算系統中,資源一般都會采用Hypervisor虛擬化技術,如Xen、KVM等把計算資源變成同構(Homogeneous)的節點,以便統一管理,把NSF的超級計算機與商用的公有云相結合主要是Amazon的EC2,實現大規模的基于工作流的科學計算,所以說Eucalyptus是VGrADS和EC2集成和融合的結果,采用Xen虛擬機實現了AWS的API,吸收了多種網格計算系統和EC2的優點。
Eucalyptus 包含五個主要構件,它們能相互協作共同提供云服務,這些構件使用具有 WS-Security (Web服務安全,是一種提供在Web服務上應用安全的方法的網格傳輸協議)的 SOAP 消息傳遞安全地實現相互通信。
(1)Cloud Controller(CLC):這是主要的控制器構件,負責管理整個系統。它是所有用戶和管理員進入Eucalyptus云的主要入口。所有客戶機通過基于SOAP或REST的API與CLC通信。由 CLC 負責把請求傳遞給正確的構件、收集它們并把來自這些構件的響應發送回至該客戶機,是Eucalyptus云的對外“窗口”。
(2)Cluster Controller(CC):這個控制構件負責管理一個集群中的虛擬實例網絡。請求通過基于SOAP或REST的接口被送至CC。CC維護運行在系統內的Node Controller的全部信息,并負責控制這些實例的生命周期。它把開啟虛擬實例的請求路由到具有可用資源的Node Controller。
(3)Node Controller(NC):它控制主機操作系統及相應的Hypervisor(Xen , KVM,VMWare)。在虛擬實例(根據來自 CC 的請求實例化)的每個機器上必須運行一個NC實例。
(4)Walrus(W):這個控制器構件管理對Eucalyptus內的存儲服務的訪問。請求通過基于 SOAP 或 REST 的接口傳遞至 Walrus。
(5)Storage Controller(SC):實現 Amazon的S3接口,SC與Walrus聯合工作,用于存儲和訪問虛擬機映像、內核映像、RAM磁盤映像和用戶數據。其中,VM映像可以是公共的,也可以是私有的,并最初以壓縮和加密的格式存儲。這些映像只有在某個節點需要啟動一個新的實例并請求訪問此映像時才會被解密。
Eucalyptus的開源軟件構件無須修改即可使用,可以輕松地運行在沒做修改的GNU Linux內核上。更重要的是,它設計了與Amazon的EC2平臺兼容的開放編程接口(API)。這意味著一家評估EC2的公司可以在免費的操作系統上使用免費軟件來構建相互兼容的實驗,在將工作移向實際的AWS云環境之前采用Eucalyptus從事開發工作[3]。
4.1所需的軟硬件設備
(1)準備兩臺機器,用虛擬機軟件(Sun VirtualBox)來虛擬出兩臺實際的機器
(2)操作系統:Ubuntu9.10服務器版
(3)云計算平臺環境:Eucalyptus,(Ubuntu9.10 服務器版內置)
(4)Eucalyptus 命令行客戶端
(5)Eucalyptus客戶端: Elastic Fox(firefox插件)
4.2搭建云計算平臺
(1)一臺機器,作為Cluster(Front End),命名為:ubuntu-cluster,包含了如下部分:Cloud Controller(clc)、Cluster Controller(cc)、Walrus(the S3-like storage service)、Storage Controller(sc)。
(2)一臺機器作為Node,命名為:ubuntu-node1,包含了如下部分:Node Controller (nc)。
(3)在作為Cluster的機器上,安裝基本系統:Ubuntu9.10服務器版。
〖1〗安裝引導時,要選擇 "Install Ubuntu Enterprise Cloud"
〖2〗安裝過程中,如果提示"Cluster" 還是"Node",一定要選擇Cluster
〖3〗安裝過程中,提示"Configure postfix"時選擇internet Site
〖4〗安裝過程中,提示"Name your cluster"時,請取一個合適的名字,比如取之為:cluster1
〖5〗安裝過程中,提示"a list of available IP addresses on your network", 一定要選擇一個可用的公共IP段。
(4)在作為Node的機器上,也安裝基本系統:Ubuntu9.10服務器版。
〖1〗安裝引導時,要選擇 "Install Ubuntu Enterprise Cloud"
〖2〗安裝過程中,如果提示"Cluster"還是"Node",一定要選擇Node,如果Cluster正在運行,這一步可能不會出現,自動會選擇Node。
〖3〗安裝完一個節點
(5)在Cloud Controller(位于ubuntu-cluster)上注冊所有的Node機器。在ubuntu-cluster上執行:sudo euca_conf -no-rsync -discover-nodes
4.3云計算平臺命令行管理工具(Euca2ools)
(1)在https://YourIP:8443中注冊個人信息然后登錄下載證書euca2-yourname-x509.zip
(2)在客戶端機器上執行
$mkdir~/.euca
$cd~/.euca
$unzip euca2-yourname-x509.zip
$chmod0700~/.euca
$chmod0600~/.euca/*
(3)在客戶端機器上執行,安裝Euca2ools和EC2-API-Tools
.~/.euca/eucarc
echo"[-r~/.euca/eucarc]&&.~/.euca/eucarc">>~/.bashrc
sudo apt-get install euca2ools
sudo apt-get install ec2-api-tools
sudo reboot
(4)在客戶端機器,使用Euca2ools上傳Kernel/Ramdisk/FS Image(使用者可注冊Image,但只有管理者才可注冊kernel/ramdisks)
4.4云計算平臺虛擬環境的搭建
(1)虛擬機軟件: Sun VirtualBox
(2)管理->全局設定->網絡中選擇 "Host-Only"點編輯,然后選擇 "DHCP服務器",禁用"啟用服務器"
(3)建立兩臺虛擬機,Linux/Ubuntu,網絡選擇Host-Only方式
(4)在宿主機器上,將可以聯互聯網的網卡設置為針對Host-Only網卡的共享,這里之所以采用Host-Only +通過宿主機器共享上網,而不采用Bridged的聯網方式,是前者可以在離開網絡支持的情況下,虛擬機之間的關系保持不變。
4.5云計算平臺集群配置和使用
Hadoop包括基于GFS的文件系統HDFS(Hadoop Distributed File System)、計算架構MapReduce及基于Bigtable原理的結構化數據處理HBase系統等。Hadoop很快成為確實可擴展應用于Web數據處理的技術,后來Hadoop成為一個Apache開源項目。
Hadoop建立了一個相對通用的作業調度與管理系統,提供JobTracker和TaskTracker,便于Hadoop系統更好地應用于海量數據的批量處理。
Hadoop系統的處理節點還可以基于虛擬化技術實現節點的同構化,Hadoop系統還提供了一個基于Web的作業監控管理界面方便用戶,提供相關API實現與其他技術的兼容,例如,Hadoop可以和HDFS以外的許多文件系統兼容,包括提供新的文件系統。
Hadoop技術體系是HPC技術體系的簡化版,專門針對關聯度很小的海量數據的并行處理,而HPC技術體系是一組通用的技術,適用面比Hadoop廣,但在處理搜索引擎和互聯網數據相關應用時效率不如Hadoop高。在Hadoop技術被應用到更廣泛的領域時,有可能會需要增加更多更復雜的功能,這時就需要和原有的HPC相結合。
集群配置環境是7臺普通的機器,操作系統都是Linux。Hadoop一大特點就是機器在多不在精。JDK必須是1.5以上的。7臺機器的機器名務必不同。
下面介紹實施步驟:
在所有的機器上都建立相同的目錄,也可以建立相同的用戶,以該用戶的home路徑來做hadoop的安裝路徑。例如在所有的機器上都建立了/home/ XieZhiMing。下載Hadoop,先解壓到Master上。這里下載的是0.17.1版本。此時Hadoop的安裝路徑就是/home/ XieZhiMing/hadoop-0.17.1。解壓后進入conf目錄,主要需要修改以下文件:hadoop-env.sh,hadoop-site.xml、masters、slaves。Hadoop的基礎配置文件是hadoop-default.xml,看Hadoop的代碼可以知道,默認建立一個Job的時候會建立Job的Config,Config首先讀入hadoop-default.xml的配置,然后再讀入hadoop-site.xml的配置(這個文件初始的時候配置為空),hadoop-site.xml中主要配置你需要覆蓋的hadoop-default.xml的系統級配置,以及你需要在你的MapReduce過程中使用的自定義配置(具體的一些使用例如final等幫助文檔)。
接下來介紹Hadoop命令(Command):
命令內容其實可以通過命令的Help以及介紹了解,主要側重于介紹一下用的比較多的幾個命令。Hadoop dfs 這個命令后面加參數就是對于HDFS的操作,和Linux操作系統的命令很類似,例如:
Hadoop dfs –ls就是查看/usr/root目錄下的內容,默認如果不填路徑這就是當前用戶路徑;
Hadoop dfs –rmr xxx就是刪除目錄;
Hadoop dfsadmin –report這個命令可以全局的查看DataNode的情況;
Hadoop job后面增加參數是對于當前運行的Job的操作,例如list,kill等;
Hadoop balancer就是前面提到的均衡磁盤負載的命令。
[1]中國云計算網[EB/OL]]http://www.cncloudcomputing.com, 2009-07-07.
[2]Michael Bushe.Amazon S3 Outage:Do SLAsLead to Trust [EB/OL].http://www.infoq.com.2009-07-07.
[3]Amazon S3 Service Level Agreement [EB/OL].http://aws. amazon.com,2009-07-07.
(責任編校:何俊華)
2016-03-25
2013年永州市科技計劃指導性項目“企業制造云服務平臺關鍵技術研究”。
謝智明(1971-),國家工業與信息化部計算機軟件與技術系統分析師,湖南大學博士。
TP393
A
1673-2219(2016)10-0110-03