OpenStack雲計算快速入門(1)html
該教程基於Ubuntu12.04版,它將幫助讀者創建起一份OpenStack最小化安裝。我是五嶽之巔,翻譯中多采用意譯法,因此個別詞與原版有出入,請你們諒解。我不是英語專業,我覺着搞技術最重要的就是理解,而不是四級和考研中那煩人的英譯漢,因此個人目標是忠於原意、通俗表達,Over。英文原文在這裏(http://docs.openstack.org/es@***/openstack-compute/starter/content/ ,請將ex@***中的@去掉,CU屏蔽的F詞),下面步入正題:web
雲計算是一種計算模型,它將諸如運算能力、存儲、網絡和軟件等資源抽象成爲服務,以便讓用戶經過互聯網遠程享用,付費的形式也如同傳統公共服務設施同樣。因需而定、提供方便、動態改變和無限的虛擬化擴展能力是雲計算的幾個重要特徵。算法
不一樣的「雲」對應着不一樣的基礎設施。下面是三種廣義的「雲」:api
l 基礎設施即服務(IaaS)安全
l 平臺即服務(PaaS)服務器
l 軟件即服務(SaaS)網絡
譯者注:Open爲開放之意,Stack則是堆砌,OpenStack合起來如其名,就是許多Open的Softwares堆積的集合,但1 + 1 > 2,系統的功能更爲強大。架構
OpenStack是一整套開源軟件項目的綜合,它容許企業或服務提供者創建、運行本身的雲計算和存儲設施。Rackspace與NASA是最初重要的兩個貢獻者,前者提供了「雲文件」平臺代碼,該平臺加強了OpenStack對象存儲部分的功能,然後者帶來了「Nebula」平臺造成了OpenStack其他的部分。而今,OpenStack基金會已經有150多個會員,包括不少知名公司如「Canonical、DELL、Citrix」等。負載均衡
如下是5個OpenStack的重要構成部分:異步
l Nova - 計算服務
l Swift - 存儲服務
l Glance - 鏡像服務
l Keystone - 認證服務
l Horizon - UI服務
圖1 OpenStack基本構架
下圖展現了Keystone、Dashboard兩者與其它OpenStack部分的交互。
Nova是OpenStack計算的彈性控制器。OpenStack雲實例生命期所需的各類動做都將由Nova進行處理和支撐,這就意味着Nova以管理平臺的身份登場,負責管理整個雲的計算資源、網絡、受權及測度。雖然Nova自己並不提供任何虛擬能力,可是它將使用libvirt API與虛擬機的宿主機進行交互。Nova經過Web服務API來對外提供處理接口,並且這些接口與Amazon的Web服務接口是兼容的。
功能及特色
l 實例生命週期管理
l 計算資源管理
l 網絡與受權管理
l 基於REST的API
l 異步連續通訊
l 支持各類宿主:Xen、XenServer/XCP、KVM、UML、VMware vSphere及Hyper-V
OpenStack計算部件
l Nova彈性雲包含如下主要部分:
l API Server(nova-api)
l 消息隊列(rabbit-mq server)
l 運算工做站(nova-compute)
l 網絡控制器(nova-network)
l 卷管理(nova-volume)
l 調度器(nova-scheduler)
API服務器(nova-api)
API服務器提供了雲設施與外界交互的接口,它是外界用戶對雲實施管理的惟一通道。經過使用web服務來調用各類EC2的API,接着API服務器便經過消息隊列把請求送達至雲內目標設施進行處理。做爲對EC2-api的替代,用戶也可使用OpenStack的原生API,咱們把它叫作「OpenStack API」。
消息隊列(Rabbit MQ Server)
OpenStack內部在遵循AMQP(高級消息隊列協議)的基礎上採用消息隊列進行通訊。Nova對請求應答進行異步調用,當請求接收後便則當即觸發一個回調。因爲使用了異步通訊,不會有用戶的動做被長置於等待狀態。例如,啓動一個實例或上傳一份鏡像的過程較爲耗時,API調用就將等待返回結果而不影響其它操做,在此異步通訊起到了很大做用,使整個系統變得更加高效。
運算工做站(nova-compute)
運算工做站的主要任務是管理實例的整個生命週期。他們經過消息隊列接收請求並執行,從而對實例進行各類操做。在典型實際生產環境下,會架設許多運算工做站,根據調度算法,一個實例能夠在可用的任意一臺運算工做站上部署。
網絡控制器(nova-network)
網絡控制器處理主機的網絡配置,例如IP地址分配,配置項目VLAN,設定安全羣組以及爲計算節點配置網絡。
卷工做站(nova-volume)
卷工做站管理基於LVM的實例卷,它可以爲一個實例建立、刪除、附加捲,也能夠從一個實例中分離卷。卷管理爲什麼如此重要?由於它提供了一種保持實例持續存儲的手段,好比當結束一個實例後,根分區若是是非持續化的,那麼對其的任何改變都將丟失。但是,若是從一個實例中將卷分離出來,或者爲這個實例附加上卷的話,即便實例被關閉,數據仍然保存其中。這些數據能夠經過將卷附加到原實例或其餘實例的方式而從新訪問。
所以,爲了往後訪問,重要數據務必要寫入卷中。這種應用對於數據服務器實例的存儲而言,尤其重要。
調度器(nova-scheduler)
調度器負責把nova-API調用送達給目標。調度器以名爲「nova-schedule」的守護進程方式運行,並根據調度算法從可用資源池中恰當地選擇運算服務器。有不少因素均可以影響調度結果,好比負載、內存、子節點的遠近、CPU架構等等。強大的是nova調度器採用的是可插入式架構。
目前nova調度器使用了幾種基本的調度算法:
隨機化:主機隨機選擇可用節點;
可用化:與隨機類似,只是隨機選擇的範圍被指定;
簡單化:應用這種方式,主機選擇負載最小者來運行實例。負載數據能夠從別處得到,如負載均衡服務器。
OpenStack鏡像服務器是一套虛擬機鏡像發現、註冊、檢索系統,咱們能夠將鏡像存儲到如下任意一種存儲中:
本地文件系統(默認)
l OpenStack對象存儲
l S3直接存儲
l S3對象存儲(做爲S3訪問的中間渠道)
l HTTP(只讀)
功能及特色
提供鏡像相關服務
Glance構件
l Glance控制器
l Glance註冊器
Swift爲OpenStack提供一種分佈式、持續虛擬對象存儲,它相似於Amazon Web Service的S3簡單存儲服務。Swift具備跨節點百級對象的存儲能力。Swift內建冗餘和失效備援管理,也可以處理歸檔和媒體流,特別是對大數據(千兆字節)和大容量(多對象數量)的測度很是高效。
功能及特色
l 海量對象存儲
l 大文件(對象)存儲
l 數據冗餘管理
l 歸檔能力-----處理大數據集
l 爲虛擬機和雲應用提供數據容器
l 處理流媒體
l 對象安全存儲
l 備份與歸檔
l 良好的可伸縮性
Swift組件
l Swift帳戶
l Swift容器
l Swift對象
l Swift代理
l Swift RING
Swift代理服務器
用戶都是經過Swift-API與代理服務器進行交互,代理服務器正是接收外界請求的門衛,它檢測合法的實體位置並路由它們的請求。
此外,代理服務器也同時處理實體失效而轉移時,故障切換的實體重複路由請求。
Swift對象服務器
對象服務器是一種二進制存儲,它負責處理本地存儲中的對象數據的存儲、檢索和刪除。對象都是文件系統中存放的典型的二進制文件,具備擴展文件屬性的元數據(xattr)。
注意:xattr格式被Linux中的ext3/4,XFS,Btrfs,JFS和ReiserFS所支持,可是並無有效測試證實在XFS,JFS,ReiserFS,Reiser4和ZFS下也一樣能運行良好。不過,XFS被認爲是當前最好的選擇。
Swift容器服務器
容器服務器將列出一個容器中的全部對象,默認對象列表將存儲爲SQLite文件(譯者注:也能夠修改成MySQL,安裝中就是以MySQL爲例)。容器服務器也會統計容器中包含的對象數量及容器的存儲空間耗費。
Swift帳戶服務器
帳戶服務器與容器服務器相似,將列出容器中的對象。
Ring(索引環)
Ring容器記錄着Swift中物理存儲對象的位置信息,它是真實物理存儲位置的實體名的虛擬映射,相似於查找及定位不一樣集羣的實體真實物理位置的索引服務。這裏所謂的實體指帳戶、容器、對象,它們都擁有屬於本身的不一樣的Rings。
Keystone爲全部的OpenStack組件提供認證和訪問策略服務,它依賴自身REST(基於Identity API)系統進行工做,主要對(但不限於)Swift、Glance、Nova等進行認證與受權。事實上,受權經過對動做消息來源者請求的合法性進行鑑定。以下圖所示:
Keystone採用兩種受權方式,一種基於用戶名/密碼,另外一種基於令牌(Token)。除此以外,Keystone提供如下三種服務:
l 令牌服務:含有受權用戶的受權信息
l 目錄服務:含有用戶合法操做的可用服務列表
l 策略服務:利用Keystone具體指定用戶或羣組某些訪問權限
認證服務組件
服務入口:如Nova、Swift和Glance同樣每一個OpenStack服務都擁有一個指定的端口和專屬的URL,咱們稱其爲入口(endpoints)。
l 區位:在某個數據中心,一個區位具體指定了一處物理位置。在典型的雲架構中,若是不是全部的服務都訪問分佈式數據中心或服務器的話,則也稱其爲區位。
l 用戶:Keystone受權使用者
譯者注:表明一個個體,OpenStack以用戶的形式來受權服務給它們。用戶擁有證書(credentials),且可能分配給一個或多個租戶。通過驗證後,會爲每一個單獨的租戶提供一個特定的令牌。[來源:http://blog.sina.com.cn/s/blog_70064f190100undy.html ]
l 服務:整體而言,任何經過Keystone進行鏈接或管理的組件都被稱爲服務。舉個例子,咱們能夠稱Glance爲Keystone的服務。
l 角色:爲了維護安全限定,就雲內特定用戶可執行的操做而言,該用戶關聯的角色是很是重要的。
譯者注:一個角色是應用於某個租戶的使用權限集合,以容許某個指定用戶訪問或使用特定操做。角色是使用權限的邏輯分組,它使得通用的權限能夠簡單地分組並綁定到與某個指定租戶相關的用戶。
l 租間:租間指的是具備所有服務入口並配有特定成員角色的一個項目。
譯者注:一個租間映射到一個Nova的「project-id」,在對象存儲中,一個租間能夠有多個容器。根據不一樣的安裝方式,一個租間能夠表明一個客戶、賬號、組織或項目。
Horizon是一個用以管理、控制OpenStack服務的Web控制面板,它能夠管理實例、鏡像、建立密匙對,對實例添加捲、操做Swift容器等。除此以外,用戶還能夠在控制面板中使用終端(console)或VNC直接訪問實例。總之,Horizon具備以下一些特色:
l 實例管理:建立、終止實例,查看終端日誌,VNC鏈接,添加捲等
l 訪問與安全管理:建立安全羣組,管理密匙對,設置浮動IP等
l 偏好設定:對虛擬硬件模板能夠進行不一樣偏好設定
l 鏡像管理:編輯或刪除鏡像
l 查看服務目錄
l 管理用戶、配額及項目用途
l 用戶管理:建立用戶等
l 卷管理:建立卷和快照
l 對象存儲處理:建立、刪除容器和對象
l 爲項目下載環境變量