邱元陽
編者按:新的一年,“高手論技”繼續(xù)伴隨大家前行,身處一線的你,就那些技術上最常遇到的故障、最需要解決的難題、最成熟的應用……都可以在此暢所欲言,各抒己見。是繼續(xù)圍觀還是現(xiàn)身說法,新浪微群http://q.t.sina.com.cn/264976,期待您的共同參與。
關于云計算的討論早已經(jīng)沸沸揚揚,各種互聯(lián)網(wǎng)服務都在向“云”靠攏,云平臺、云服務、云查殺、云端……各種大“云”小“云”雨后春筍般露出頭角,似乎與云不沾邊就已經(jīng)落伍于時代。本刊也開辟過多期云計算輔助教學的專欄,但“云”的技術實現(xiàn)尤其是在校園網(wǎng)上的技術實現(xiàn)還未曾涉及?!陡呤终摷肌穼⒎謨善冢瑏韺λ接性圃谛@網(wǎng)上的技術實現(xiàn)問題展開討論。
在InfoWorld網(wǎng)站公布的可能影響未來十年的十項新技術中,HTML5排在第十位,而私有云卻排在第一位。在云計算大行其道的今天,私有云技術快速成長并迅速崛起,在企業(yè)應用和Web部署中開始為眾多網(wǎng)絡管理人員所矚目。
在校園環(huán)境中,我們從說云,用云,到建云,一步步地接近云計算,似乎云計算已是觸手可及,私有云技術的桌面實現(xiàn)也指日可待。
云計算的教育應用開展得如火如荼,但是其技術實現(xiàn)卻諱莫如深。校園網(wǎng)中如何實現(xiàn)基于虛擬化的私有云技術,有無必要在教育應用的網(wǎng)絡環(huán)境中構建自己的私有云,對于網(wǎng)絡管理人員來說,還是一種彷徨和觀望。
● 撥開迷霧——什么是私有云
我們回顧一下計算模式的重大變化:首先是大型機計算模式,隨后是客戶機/服務器計算模式,最后又有了一種新的計算模式,就是“云計算”。它是第三代IT應用模式,也是分布式計算和數(shù)據(jù)中心發(fā)展道路上的新階段。
云計算的出現(xiàn)給IT的發(fā)展趨勢帶來了一抹亮麗的曙光,在短短的幾年內(nèi),其應用范圍已經(jīng)滲透到從企業(yè)到學校、從網(wǎng)絡服務到安全工具的各個方面,從軟件即服務(SaaS)、平臺即服務 (PaaS)到基礎結構即服務(IaaS),云計算已將硬件(服務器、存儲和網(wǎng)絡基礎結構)抽象處理為一組計算、存儲和連接功能。為使云計算能更適合小范圍的Web部署和應用,微軟提出了私有云技術解決方案,實現(xiàn)現(xiàn)有信息基礎架構上的高性能應用。
隨著集群、網(wǎng)格等分布式計算架構的出現(xiàn)和成熟,它們開始直接用于云計算模式。事實上,云計算就是集群、網(wǎng)格計算的一種自然延伸,它幫助我們更方便、靈活地管理和使用計算資源。
從服務的角度來看,云計算也是提供IT服務的一種方式而非產(chǎn)品。云計算的應用類型,大致可以分為公共云、私有云、混合云三種形式(如圖1)。
公共云(Public Cloud):服務提供商通過互聯(lián)網(wǎng)向客戶提供計算、存儲及其他IT資源,個人和組織機構都可以獲得云服務。典型的公共云有亞馬遜的彈性計算云(EC2)、IBM的藍云(Blue Cloud)和谷歌的應用程序引擎(App Engine)等。
私有云(Private Cloud):指一個單位運用虛擬化等云計算技術來構建一個數(shù)據(jù)中心的模型,它部署在防火墻后面的專有網(wǎng)絡或數(shù)據(jù)中心內(nèi)。
混合云(Hybrid Cloud):多種云服務和云資源形式的組合、整合,由內(nèi)部和外部兩個提供方維護。
公共云基于標準云計算服務模式,在公共云中,服務供應商創(chuàng)造資源,如應用和存儲,公眾可以通過網(wǎng)絡獲取這些資源。
私有云被用來池化內(nèi)部IT資源以便共享,同時還可以有效管理對外部資源的訪問。在私有云中,資源為自己所調(diào)度和使用。
私有云是虛擬技術的全方位應用。設計為私有云的數(shù)據(jù)中心在應用和服務方面與公共云很相似。所有計算資源都集中在一個“池”中,以此向外按需提供應用和服務。它們的唯一區(qū)別是計算資源池只能通過這個單位的內(nèi)部數(shù)據(jù)中心訪問,而不是公共的Internet。這意味著計算資源必須是虛擬化和可遷移的,它們可以在網(wǎng)絡中實時移動。
私有云通過共享提高了IT資源的利用率,減少了所需的服務器數(shù)量及數(shù)據(jù)中心的占地面積,也降低了電力、運營和管理成本。
很多公司都提出了自己的私有云解決方案,從硬件到應用程序的各個傳統(tǒng)層級都可以提供相應服務,歸納起來,有下列幾種基本類型。
軟件即服務(SaaS):特色是根據(jù)需要作為服務提供的一整套應用程序。軟件的單個實例運行在云上,為多個最終用戶或機構提供服務,如salesforce.com、Google Apps等。
平臺即服務(PaaS):把軟件層平臺作為服務提供,可用來構建更高水平的服務,如谷歌的App Engine。
基礎架構即服務(IaaS):通過網(wǎng)絡作為標準化服務提供基本存儲和計算能力。服務器、存儲系統(tǒng)、交換機、路由器和各種系統(tǒng)都是合用,可用來處理從應用程序組件到高性能計算應用程序的工作負荷,如Joyent。
私有云是為單個用戶構建和使用的,因而能夠提供對數(shù)據(jù)、安全性和服務的最有效控制。通常,可用一個6層模型來描述私有云的參考架構(如圖2)。
● 亦真亦幻——再談虛擬化
虛擬化是云計算的基石。
在校園網(wǎng)環(huán)境中,常常有多臺服務器,運行著多種應用,然而服務器常常是很有限的,還是遠遠滿足不了更多應用需求。在高可靠性和大并發(fā)訪問的需求下,我們不得不采用網(wǎng)絡存儲和集群來解決應用需求,這又不得不增加服務器開銷。目前的服務器配置,CPU的處理能力和內(nèi)存容量已經(jīng)不是問題,甚至還有節(jié)余,4核甚至8核的CPU都很常見,48G的內(nèi)存也不為過,數(shù)十TB的存儲系統(tǒng)也足夠使用,如何充分利用校園網(wǎng)現(xiàn)有的服務器資源,充分發(fā)揮硬件的作用和軟件的性能?將服務器虛擬化,利用集群實現(xiàn)數(shù)據(jù)中心的虛擬化,私有云技術也許是一個很好的解決方案。
服務器虛擬化能夠避免采購過多的服務器,從而節(jié)省大量的支出。實際情況中占用率極低的服務器為數(shù)眾多,虛擬化技術可以使一臺物理服務器完成多臺服務器的工作。隨著虛擬化技術的普及,IT部門不再滿足于這種節(jié)省成本的戰(zhàn)術性手段,開始采用更具戰(zhàn)略意義的方式來實現(xiàn)虛擬化,這就是私有云技術。
以一個普通的校園網(wǎng)為例,我們給出一個私有云的框架示意。圖3所示,每臺服務器上運行著多個虛擬機,分別用來跑教學平臺、教學管理系統(tǒng)、學校辦公系統(tǒng)等,然后將每個服務器中運行相同應用的虛擬機進行集群,既不會增加服務器數(shù)量,又保證了服務能力,當一臺服務器宕機時,不會造成某個應用停止。如果采用傳統(tǒng)的方式,每臺服務器上運行一個應用,不僅需要多臺服務器,還容易在服務器宕機時使相應服務停止,若用多臺物理機集群,又增加了服務器數(shù)量??梢?,以虛擬化為基礎,結合集群技術,可以在現(xiàn)有基礎設施上實現(xiàn)更多更安全的應用,降低了成本,提高了性能。
要實現(xiàn)這樣的框架,虛擬化是最開始就需要解決的。服務器虛擬化常常是構建私有云的第一步。
構建私有云時,所使用到的一些基本組件,就是服務器、存儲和虛擬化軟件,然后才可構建集群。集群運轉后便可以預配置虛擬服務器了,形成一種包含服務器層、網(wǎng)絡層和虛擬化層的分層架構,在每一層都需要有相應的管理工具來實現(xiàn)自動化(如圖4)。比如選擇VMware作為虛擬化軟件,CA的Service Assurance套件作為監(jiān)控工具,IBM的Tivoli、BMC的BladeLogic作為自動化管理工具。
新的CPU生產(chǎn)技術都已經(jīng)支持CPU的硬件虛擬化,這種支持也為在服務器上運行裸機虛擬機提供了可能。當然,在萬不得已的情況,也可以在操作系統(tǒng)上運行虛擬機,不過性能肯定會大打折扣。
談到虛擬化,我們都會想到VMware。VMware的虛擬機軟件產(chǎn)品眾多,在私有云架設中常用到的有VMware ESX和VMware vSphere等。我們做網(wǎng)絡實驗時用的VMware Workstation最好不要用到這里的虛擬化上,這里涉及虛擬化的三種架構類型。
為了不間斷地支持多工作負載遷移的能力,需要Hypervisor來支撐并實現(xiàn)這個基本功能。Hypervisor是一種在虛擬環(huán)境中的“元”操作系統(tǒng),也可叫做VMM(虛擬機監(jiān)視器)。Hypervisor運行在基礎物理服務器和操作系統(tǒng)之間的中間軟件層,可允許多個操作系統(tǒng)和應用共享硬件,是所有虛擬化技術的核心。各種Hypervisor的架構存在一些差異,主要架構類別有:
Type I(裸機虛擬化Bare-metal):虛擬機直接運行在系統(tǒng)硬件上,創(chuàng)建硬件全仿真實例,即“裸機”型。其代表有VMware ESX Server、微軟Hyper-V、Citrix Xen Server、Linux KVM等。
Type II(主機虛擬化Hosted):虛擬機運行在傳統(tǒng)操作系統(tǒng)上,同樣創(chuàng)建的是硬件全仿真實例,即“托管(宿主)”型。其代表有VMware Server(GSX)、VMware Workstation、微軟Virtual PC、Virtual Server等。
Type Ⅲ(操作系統(tǒng)虛擬化OS-Level):虛擬機運行在傳統(tǒng)操作系統(tǒng)上,創(chuàng)建一個獨立的虛擬化實例(容器),指向底層托管操作系統(tǒng),如Parallels的Virtuozzo和OpenVZ等。
三種類型中,操作系統(tǒng)虛擬化所有虛擬機共享內(nèi)核空間,性能最好,耗費資源最少,但會造成操作系統(tǒng)唯一。主機虛擬化VM(虛擬機)的應用程序調(diào)用硬件資源時需要經(jīng)過VM內(nèi)核→Hypervisor→主機內(nèi)核,導致性能是最差的。這就是前面提到的不要在操作系統(tǒng)上用VMware Workstation創(chuàng)建虛擬機的原因。
在私有云中,Hypervisor一般是裸機型和宿主型的,以裸機型最為常見,直接安裝在硬件服務器上,操作系統(tǒng)安裝并且運行在Hypervisor之上。
可用的虛擬化軟件還有VMware vSphere、IBM PowerVM、Red Hat Enterprise Virtulization、VirtualBSD等。為了方便對Hypervisor管理,常常需要操作系統(tǒng)級的集成工具,如微軟的System Center等。
Eucalyptus則是著名的開源云計算軟件,用Xen和KVM作為虛擬化的管理程序。Eucalyptus的Enterprise版已經(jīng)對vSphere ESX/ESXi提供了支持。
Eucalyptus的組件包括云控制器(CLC)、集群控制器(CC)、節(jié)點控制器(NC)、存儲控制器(SC)等,Eucalyptus可以從源代碼安裝,也可以從面向特定Linux發(fā)布版的包安裝。
● 舍我其誰——向私有云遷移
有多種途徑可以實現(xiàn)從現(xiàn)有的C/S基礎架構轉向云計算,其中三種途徑是最主要和最有效的。
從虛擬機遷移到云:對于已經(jīng)在虛擬機上部署了應用程序的用戶來說,可以將虛擬服務器結合起來,形成可管理的虛擬機集群,部署虛擬化管理平臺來自動調(diào)配虛擬機和跨虛擬機集群的計算資源,從而形成內(nèi)部運營的私有云。
從網(wǎng)格遷移到云:通過部署云管理軟件,采用虛擬化技術和資源配置工具可以將網(wǎng)格變成私有云。
從桌面遷移到云:應用程序可以從專用服務器遷移到共享基礎架構上,并從客戶端設備進行訪問。
然而,私有云的技術實現(xiàn)卻并非輕而易舉。在沒有足夠技術支持的條件下,往往需要采用一些大型云服務公司的既定解決方案。這些方案常常是包含硬件設施、軟件基礎和服務在內(nèi)的成套技術。目前較有市場的主流私有云“套餐”主要有四類。
IBM CloudBurst:IBM在2009年提出來的云基礎架構,一般認為它是由“藍云”架構衍生出來的企業(yè)私有云解決方案,可以看作是“藍云”架構在“企業(yè)云”場景中的實例。
最新的CloudBurst 2.1基于4~28個HS22V刀片服務器(每個刀片配置72GB主存),1~2個BladeCenter機箱,可運行100~960個虛擬機。管理軟件使用的是Tivilo Provising Manager V7.1,Monitoring V6.2.1和System Director6.1.1,而VMware ESXi 3.5管理程序則直接內(nèi)置在每個HS22刀片主板的閃存中。
VCE Vblock:它是虛擬計算環(huán)境聯(lián)盟的簡稱,也是VMware、Cisco和EMC的縮寫。Vblock于2009年推出,是三家公司聯(lián)手打造的基礎架構包,集合了三者的核心技術,是一款用于打造企業(yè)私有云的尖端產(chǎn)品。
Vblock有三種配置,包含了思科統(tǒng)一計算系統(tǒng)、EMC Celerra unified storage(或EMC CLARiiON CX4、Symmetrix VMAX)和VMware vSphere 4,可以支持300~6000個虛擬機。
HP CloudStart:CloudStart是惠普在2010年推出的私有云解決方案,號稱可以在30天內(nèi)幫助企業(yè)建立自己的私有云。
CloudStart基于HP的刀片矩陣系統(tǒng)(BladeSystem Matrix),是將BladeSystem Matrix和一些預定義的服務打包到一起形成的一個私有云套餐,形成一個結合了服務器、存儲、網(wǎng)絡和軟件的平臺,為用戶提供了VMware、微軟Hyper-V和思杰HyperVisor的支持選項。
Oracle Exalogic Elastic Cloud:它于2010推出,瞄準企業(yè)級的數(shù)據(jù)中心整合與私有云建設,被戲稱作是“盒子里的云”(Cloud-in-a-box),在標準的19英寸寬、42U高的機柜里,集成了服務器、存儲、網(wǎng)絡、VM、操作系統(tǒng)和中件間等軟硬件資源。其特色是使用InfiniBand中間件互連,讓所有配置在一起可以形成一個獨立高效的大型計算機。
Exalogic的計算節(jié)點使用的是1U雙路12核機架服務器,配置64位 X86處理器,基于InfiniBand的I/O架構,96GB的內(nèi)存,2個16GB的名為FlashFire的SSD 固態(tài)磁盤和40TB的磁盤存儲。1/4機架設置的Exalogic有8個計算節(jié)點。
上面這些主流的私有云解決方案,可以非常方便地構建私有云。然而采用以上這些“套餐”的成本,常常在幾百萬元以上,不是一般的校園網(wǎng)能夠承受得起的。因此,利用虛擬化和集群技術,自己部署校園網(wǎng)的私有云,才是可行的方法。
● 不折不扣——校園網(wǎng)上實現(xiàn)私有云
云計算的觀念早已深入人心,自2010年度VMworld大會之后,私有云更是為眾多企業(yè)所青睞。然而,在部署私有云的實施過程中,幾乎每一步都是一個技術壁壘,這也使得眾多網(wǎng)絡技術人員不得要領,望而生畏。
對于稍大一些的校園網(wǎng),已經(jīng)具備了搭建私有云的資源基礎,無論是作為實際應用還是平臺試驗,都可以進行一下技術嘗試。私有云的實現(xiàn)涉及很多的前沿技術,頭緒較多,由于篇幅所限,無法給出詳細的實施過程,這里僅對私有云在校園網(wǎng)上的技術實現(xiàn)作一簡單闡述,勾勒出一個明晰的框架,期望在大家著手實施時會有所幫助。
考慮到簡便性和可操作性,這里給出基于Eucalyptus的私有云實現(xiàn)過程。
Eucalyptus隨著Linux發(fā)行版Ubuntu的高度集成迅速竄紅,在Ubuntu 9.10版中,就已經(jīng)成了安裝菜單的一個選項,讓云的架設更加貼近普通用戶。這個開源并且免費的云平臺正是我們所需要的。
這里以Ubuntu 10.04為例子,簡述基于UEC的私有云搭建過程。因為篇幅所限,省去了過程中的截圖,實現(xiàn)過程參考了Ubuntu官方網(wǎng)站中的英文幫助文檔,更詳細的資料和截圖可以訪問網(wǎng)址https://help.ubuntu.com/community/UEC/CDInstall(英文)獲取。
1.準備工作
①一個前端,用于運行云控制器(CLC)、集群控制器(CC)、Walrus(類似于S3的存儲服務)、存儲控制器(SC);一個或多個節(jié)點,用于運行節(jié)點控制器(NC)。二者最好都有較快的CPU、較大的內(nèi)存和硬盤以及較高的網(wǎng)絡帶寬支持。
②從網(wǎng)上下載Ubuntu 10.04 Server光盤(鏡像)。
2.安裝前端服務器(云/集群/存儲/Walrus)
①用Ubuntu 10.04 Server光盤(鏡像)啟動,選擇第二項——“Install Ubuntu Enterprise Cloud”。
②安裝程序將檢測是否存在其他Eucalyptus組件。
③根據(jù)你選擇的拓撲結構選擇要安裝的組件。
④給集群起個名字,如cluster1。
⑤填寫局域網(wǎng)上公用的IP地址范圍,云可以將其分配給運行的實例,例如 192.168.1.200-192.168.1.249。
3.安裝節(jié)點控制器
①首先要確保節(jié)點機器所在的網(wǎng)絡上,云/群集控制器已在運行。
②在節(jié)點機器上用同一個光盤(鏡像)引導啟動。
③同樣選擇“Install Ubuntu Enterprise Cloud”。
④系統(tǒng)會自動檢測集群環(huán)境并會預先為你選擇“節(jié)點安裝”方式。
⑤確認分區(qū)方案。
⑥安裝的剩余部分將自動進行,節(jié)點安裝完成后重新啟動。
4.注冊節(jié)點
如果是按照UEC/CDInstall方法安裝的,對于Ubuntu 10.04 LTS來說,所有組件的注冊都是自動的,包括:正確交換公共SSH密鑰、正確配置服務、服務廣播它們的存在、合適的UEC組件監(jiān)聽器在運行、驗證注冊;如果是使用UEC/PackageInstall方法安裝,這些步驟就需要手工進行(因為繁瑣而復雜,此處略去)。因為前面我們已經(jīng)選擇了光盤啟動安裝,這些步驟將會自動完成。
5.獲取證書
在安裝和啟動云控制器之后,云的用戶需要獲取他們的證書。這個可以通過瀏覽器或命令行來完成。
①通過瀏覽器進行。
在瀏覽器(遠程機器的瀏覽器或者在Ubuntu服務器上的瀏覽器均可)訪問URL“https://
默認的用戶名和密碼都是“admin”,用它登錄上去,然后按照屏幕上的提示更改管理員密碼和郵件地址。
第一次配置過程結束后,點擊屏幕左上方的“credentials”標簽,再點擊“Download Credentials”按鈕來獲取證書,將證書保存到“~/.euca”。
將下載的zip文件解壓并保存到一個安全的位置(~/.euca):
unzip -d ~/.euca mycreds.zip
②通過命令行進行。
如果是在云控制器的命令行下,可以運行下列命令提取和使用你的證書:
mkdir -p ~/.euca
chmod 700 ~/.euca
cd ~/.euca
sudo euca_conf --get-credentials mycreds.zip
unzip mycreds.zip
ln -s ~/.euca/eucarc ~/.eucarc
cd –
取得證書后,需要在服務器上使用X.509證書來設置EC2 API和AMI工具。
還需要安裝必要的云用戶工具:
sudo apt-get install euca2ools
為了驗證這一切都正常工作,可以查看一下本地集群可用性的詳細信息:
6.安裝鏡像
將鏡像添加到UEC的最簡單的方法是通過UEC web界面的Image Store來安裝。
通過如下URL來訪問web界面(確認你是使用 https):
https://
輸入你的登錄名和密碼,點擊“Store”標簽。
瀏覽可用的鏡像,在想要安裝的鏡像上點擊“Install”。
鏡像被下載并安裝完成后,可以點擊顯示在映射按鈕下的“How to run?”來查看用來實例化(啟動)該鏡像的命令。該鏡像也將顯示在Image標簽上給出的列表里。
7.運行鏡像
有多種方法來實例化UEC里的一個鏡像,如使用命令行、使用一個和UEC兼容的管理工具(如Landscape)、使用Firefox瀏覽器的ElasticFox插件等。
這里以命令行方法為例進行講解。
①在運行鏡像的一個實例之前,應該首先創(chuàng)建一個當實例啟動后可以用來以root用戶登錄到你的鏡像的密鑰對(ssh密鑰)。密鑰會被存儲起來,只需要創(chuàng)建一次即可。運行下面的命令:
if [ ! -e ~/.euca/mykey.priv ]; then
mkdir -p -m 700 ~/.euca
touch ~/.euca/mykey.priv
chmod 0600 ~/.euca/mykey.priv
euca-add-keypair mykey > ~/.euca/mykey.priv
這里密鑰的名字是“mykey”,如果不小心忘記了,可以運行“euca-describe-keypairs”來獲取存儲在系統(tǒng)里的已經(jīng)創(chuàng)建的密鑰的列表。
②必須確保在運行任何eucatools工具之前運行命令“source ~/.euca/eucarc”,可能最后的辦法是將這條命令加入到.bashrc腳本文件的底部。
③必須開放實例的22端口:
euca-authorize default -P tcp -p 22 -
s 0.0.0.0/0
④接下來,可以創(chuàng)建已經(jīng)注冊的鏡像的實例:
euca-run-instances $EMI -k mykey -t m1.small
注意:如果遇到有關image_id的一個錯誤,可以通過查看Images頁面找到它,或者在Store頁面上點擊“How to Run”查看示例命令。
⑤第一次運行某個實例時,系統(tǒng)會從將要創(chuàng)建該實例的機器上為這個鏡像設置緩存。VM鏡像通常相當大,在第一次運行某個實例時,這個過程通常需要一段時間。要監(jiān)測你的實例的狀態(tài),可以運行命令:
watch -n5 euca-describe-instances
在輸出中,可以看到有關該實例的信息,包括它的狀態(tài)。當?shù)谝淮尉彺嬲谶M行的時候,實例的狀態(tài)是“pending”。
⑥當實例已經(jīng)完全啟動,上述狀態(tài)將變?yōu)椤皉unning”。在輸出里看到分配給你的實例的IP地址,然后連接到它:
IPADDR=$(euca-describe-instances | grep $EMI | grep running | tail -n1 | awk '{print $4}')
ssh -i ~/.euca/mykey.priv ubuntu@$IPADDR
⑦最后,在實例上的工作完成后,退出SSH連接,然后關閉實例:
INSTANCEID=$(euca-describe-instances | grep $EMI | grep running | tail -n1 | awk '{print $2}')
euca-terminate-instances $INSTANCEID
至此,基于UEC的私有云創(chuàng)建完成,但也僅僅是云的基礎設施而已,具體到各種應用的部署和優(yōu)化,還有非常多的工作要做。
創(chuàng)建和實現(xiàn)私有云的方法很多,可選擇的類型和云系統(tǒng)軟件及虛擬化軟件也很多,以上只是其中的一種具體方法,尚不是完整的過程,實施細節(jié)還需要在實際部署過程中摸索。雖然如此,我們也已經(jīng)開始在從“說云”、“用云”到自己“建云”的道路上邁步前進了。但愿在不長的時間內(nèi),我們可以看到眾多的私有云在校園里綻放并為教育服務。
(下期應用沙龍,更精彩)