學(xué)習(xí)筆記——本篇非原創(chuàng)汹碱,轉(zhuǎn)載自:??https://www.cnblogs.com/klb561/p/8660264.html
OpenStack既是一個社區(qū),也是一個項目和一個開源軟件橄仆,提供開放源碼軟件,建立公共和私有云衅斩,它提供了一個部署云的操作平臺或工具集盆顾,其宗旨在于:幫助組織運行為虛擬計算或存儲服務(wù)的云,為公有云畏梆、私有云您宪,也為大云奈懒、小云提供可擴(kuò)展的、靈活的云計算宪巨。
OpenStackd開源項目由社區(qū)維護(hù)磷杏,包括OpenStack計算(代號為Nova),OpenStack對象存儲(代號為Swift)捏卓,并OpenStack鏡像服務(wù)(代號Glance)的集合极祸。 OpenStack提供了一個操作平臺,或工具包怠晴,用于編排云遥金。
下面列出Openstack的詳細(xì)構(gòu)架圖
Openstack的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖
整個OpenStack是由控制節(jié)點,計算節(jié)點龄寞,網(wǎng)絡(luò)節(jié)點汰规,存儲節(jié)點四大部分組成。(這四個節(jié)點也可以安裝在一臺機(jī)器上物邑,單機(jī)部署)
其中:
控制節(jié)點負(fù)責(zé)對其余節(jié)點的控制溜哮,包含虛擬機(jī)建立,遷移色解,網(wǎng)絡(luò)分配茂嗓,存儲分配等等
計算節(jié)點負(fù)責(zé)虛擬機(jī)運行
網(wǎng)絡(luò)節(jié)點負(fù)責(zé)對外網(wǎng)絡(luò)與內(nèi)網(wǎng)絡(luò)之間的通信
存儲節(jié)點負(fù)責(zé)對虛擬機(jī)的額外存儲管理等等
控制節(jié)點架構(gòu):
控制節(jié)點包括以下服務(wù)
? ?管理支持服務(wù)
? ?基礎(chǔ)管理服務(wù)
? ?擴(kuò)展管理服務(wù)
? ?1)管理支持服務(wù)包含MySQL與Qpid兩個服務(wù)
MySQL:數(shù)據(jù)庫作為基礎(chǔ)/擴(kuò)展服務(wù)產(chǎn)生的數(shù)據(jù)存放的地方
Qpid:消息代理(也稱消息中間件)為其他各種服務(wù)之間提供了統(tǒng)一的消息通信服務(wù)
? ?2)基礎(chǔ)管理服務(wù)包含Keystone,Glance科阎,Nova述吸,Neutron,Horizon五個服務(wù)
Keystone:認(rèn)證管理服務(wù)锣笨,提供了其余所有組件的認(rèn)證信息/令牌的管理蝌矛,創(chuàng)建,修改等等错英,使用MySQL作為統(tǒng)一的數(shù)據(jù)庫
Glance:鏡像管理服務(wù)入撒,提供了對虛擬機(jī)部署的時候所能提供的鏡像的管理,包含鏡像的導(dǎo)入椭岩,格式茅逮,以及制作相應(yīng)的模板
Nova:計算管理服務(wù),提供了對計算節(jié)點的Nova的管理判哥,使用Nova-API進(jìn)行通信
Neutron:網(wǎng)絡(luò)管理服務(wù)献雅,提供了對網(wǎng)絡(luò)節(jié)點的網(wǎng)絡(luò)拓?fù)涔芾恚瑫r提供Neutron在Horizon的管理面板
Horizon:控制臺服務(wù)塌计,提供了以Web的形式對所有節(jié)點的所有服務(wù)的管理挺身,通常把該服務(wù)稱為DashBoard
? ?3)擴(kuò)展管理服務(wù)包含Cinder,Swift锌仅,Trove瞒渠,Heat良蒸,Centimeter五個服務(wù)
Cinder:提供管理存儲節(jié)點的Cinder相關(guān),同時提供Cinder在Horizon中的管理面板
Swift:提供管理存儲節(jié)點的Swift相關(guān)伍玖,同時提供Swift在Horizon中的管理面板
Trove:提供管理數(shù)據(jù)庫節(jié)點的Trove相關(guān)嫩痰,同時提供Trove在Horizon中的管理面板
Heat:提供了基于模板來實現(xiàn)云環(huán)境中資源的初始化,依賴關(guān)系處理窍箍,部署等基本操作串纺,也可以解決自動收縮,負(fù)載均衡等高級特性。
Centimeter:提供對物理資源以及虛擬資源的監(jiān)控椰棘,并記錄這些數(shù)據(jù)纺棺,對該數(shù)據(jù)進(jìn)行分析,在一定條件下觸發(fā)相應(yīng)動作
控制節(jié)點一般來說只需要一個網(wǎng)絡(luò)端口用于通信/管理各個節(jié)點
網(wǎng)絡(luò)節(jié)點架構(gòu)
網(wǎng)絡(luò)節(jié)點僅包含Neutron服務(wù)
Neutron:負(fù)責(zé)管理私有網(wǎng)段與公有網(wǎng)段的通信邪狞,以及管理虛擬機(jī)網(wǎng)絡(luò)之間的通信/拓?fù)涞或颍芾硖摂M機(jī)之上的防火等等
網(wǎng)絡(luò)節(jié)點包含三個網(wǎng)絡(luò)端口
eth0:用于與控制節(jié)點進(jìn)行通信
eth1:用于與除了控制節(jié)點之外的計算/存儲節(jié)點之間的通信
eth2:用于外部的虛擬機(jī)與相應(yīng)網(wǎng)絡(luò)之間的通信
計算節(jié)點架構(gòu)
計算節(jié)點包含Nova,Neutron帆卓,Telemeter三個服務(wù)
? 1)基礎(chǔ)服務(wù)
Nova:提供虛擬機(jī)的創(chuàng)建,運行剑令,遷移糊啡,快照等各種圍繞虛擬機(jī)的服務(wù),并提供API與控制節(jié)點對接,由控制節(jié)點下發(fā)任務(wù)
Neutron:提供計算節(jié)點與網(wǎng)絡(luò)節(jié)點之間的通信服務(wù)
? 2)擴(kuò)展服務(wù)
Telmeter:提供計算節(jié)點的監(jiān)控代理,將虛擬機(jī)的情況反饋給控制節(jié)點,是Centimeter的代理服務(wù)
計算節(jié)點包含最少兩個網(wǎng)絡(luò)端口
eth0:與控制節(jié)點進(jìn)行通信侧到,受控制節(jié)點統(tǒng)一調(diào)配
eth1:與網(wǎng)絡(luò)節(jié)點,存儲節(jié)點進(jìn)行通信
存儲節(jié)點架構(gòu)
存儲節(jié)點包含Cinder印机,Swift等服務(wù)
Cinder:塊存儲服務(wù),提供相應(yīng)的塊存儲楣责,簡單來說,就是虛擬出一塊磁盤,可以掛載到相應(yīng)的虛擬機(jī)之上,不受文件系統(tǒng)等因素影響,對虛擬機(jī)來說,這個操作就像是新加了一塊硬盤豌骏,可以完成對磁盤的任何操作蒂窒,包括掛載衰抑,卸載,格式化赃春,轉(zhuǎn)換文件系統(tǒng)等等操作,大多應(yīng)用于虛擬機(jī)空間不足的情況下的空間擴(kuò)容等等
Swift:對象存儲服務(wù),提供相應(yīng)的對象存儲拉一,簡單來說烦租,就是虛擬出一塊磁盤空間窃祝,可以在這個空間當(dāng)中存放文件,也僅僅只能存放文件究抓,不能進(jìn)行格式化绑嘹,轉(zhuǎn)換文件系統(tǒng)畅卓,大多應(yīng)用于云磁盤/文件
存儲節(jié)點包含最少兩個網(wǎng)絡(luò)接口
eth0:與控制節(jié)點進(jìn)行通信,接受控制節(jié)點任務(wù)俩莽,受控制節(jié)點統(tǒng)一調(diào)配
eth1:與計算/網(wǎng)絡(luò)節(jié)點進(jìn)行通信取刃,完成控制節(jié)點下發(fā)的各類任務(wù)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面說一說Openstack的各個組件作用及關(guān)系
Openstack發(fā)展至今屁柏,總共集成了下面幾個組件:
Nova - 計算服務(wù)
Neutron-網(wǎng)絡(luò)服務(wù)
Swift - 對象存儲服務(wù)
Cinder-塊存儲服務(wù)
Glance - 鏡像服務(wù)
Keystone - 認(rèn)證服務(wù)
Horizon - UI服務(wù)
Ceilometer-監(jiān)控服務(wù)
Heat-集群服務(wù)
Trove-數(shù)據(jù)庫服務(wù)
組件間的關(guān)系圖如下:
重要組件介紹
OpenStack認(rèn)證服務(wù)(Keystone)
Keystone為所有的OpenStack組件提供認(rèn)證和訪問策略服務(wù),它依賴自身REST(基于Identity API)系統(tǒng)進(jìn)行工作清蚀,主要對(但不限于)Swift东揣、Glance脸候、Nova等進(jìn)行認(rèn)證與授權(quán)配深。事實上,授權(quán)通過對動作消息來源者請求的合法性進(jìn)行鑒定矫限。下圖顯示了身份認(rèn)證服務(wù)流程:
Keystone采用兩種授權(quán)方式蹂午,一種基于用戶名/密碼堡妒,另一種基于令牌(Token)伏尼。
除此之外肢藐,Keystone提供以下三種服務(wù):
令牌服務(wù):含有授權(quán)用戶的授權(quán)信息
目錄服務(wù):含有用戶合法操作的可用服務(wù)列表
策略服務(wù):利用Keystone具體指定用戶或群組某些訪問權(quán)限
keystone認(rèn)證服務(wù)注意點:
服務(wù)入口:如Nova、Swift和Glance一樣每個OpenStack服務(wù)都擁有一個指定的端口和專屬的URL烦磁,我們稱其為入口(endpoints)养匈。
區(qū)位:在某個數(shù)據(jù)中心,一個區(qū)位具體指定了一處物理位置都伪。在典型的云架構(gòu)中呕乎,如果不是所有的服務(wù)都訪問分布式數(shù)據(jù)中心或服務(wù)器的話,則也稱其為區(qū)位陨晶。
用戶:Keystone授權(quán)使用者
PS:代表一個個體猬仁,OpenStack以用戶的形式來授權(quán)服務(wù)給它們帝璧。用戶擁有證書(credentials),且可能分配給一個或多個租戶湿刽。經(jīng)過驗證后的烁,會為每個單獨的租戶提供一個特定的令牌。
服務(wù):總體而言诈闺,任何通過Keystone進(jìn)行連接或管理的組件都被稱為服務(wù)渴庆。舉個例子,我們可以稱Glance為Keystone的服務(wù)雅镊。
角色:為了維護(hù)安全限定襟雷,就云內(nèi)特定用戶可執(zhí)行的操作而言,該用戶關(guān)聯(lián)的角色是非常重要的仁烹。
PS:一個角色是應(yīng)用于某個租戶的使用權(quán)限集合耸弄,以允許某個指定用戶訪問或使用特定操作。角色是使用權(quán)限的邏輯分組卓缰,它使得通用的權(quán)限可以簡單地分組并綁定到與某個指定租戶相關(guān)的用戶计呈。
租間:租間指的是具有全部服務(wù)入口并配有特定成員角色的一個項目。
PS:一個租間映射到一個Nova的“project-id”征唬,在對象存儲中捌显,一個租間可以有多個容器。根據(jù)不同的安裝方式总寒,一個租間可以代表一個客戶苇瓣、帳號、組織或項目偿乖。
OpenStack計算設(shè)施----Nova
Nova是OpenStack計算的彈性控制器击罪。OpenStack云實例生命期所需的各種動作都將由Nova進(jìn)行處理和支撐,這就意味著Nova以管理平臺的身份登場贪薪,負(fù)責(zé)管理整個云的計算資源媳禁、網(wǎng)絡(luò)、授權(quán)及測度画切。雖然Nova本身并不提供任何虛擬能力竣稽,但是它將使用libvirt API與虛擬機(jī)的宿主機(jī)進(jìn)行交互。Nova通過Web服務(wù)API來對外提供處理接口霍弹,而且這些接口與Amazon的Web服務(wù)接口是兼容的毫别。
功能及特點:
實例生命周期管理
計算資源管理
網(wǎng)絡(luò)與授權(quán)管理
基于REST的API
異步連續(xù)通信
支持各種宿主:Xen、XenServer/XCP典格、KVM岛宦、UML、VMware vSphere及Hyper-V
Nova彈性云(OpenStack計算部件)包含以下主要部分:
API Server(nova-api)
消息隊列(rabbit-mq server)
運算工作站(nova-compute)
網(wǎng)絡(luò)控制器(nova-network)
卷管理(nova-volume)
調(diào)度器(nova-scheduler)
解釋如下:
1)API服務(wù)器(nova-api)
API服務(wù)器提供了云設(shè)施與外界交互的接口耍缴,它是外界用戶對云實施管理的唯一通道砾肺。通過使用web服務(wù)來調(diào)用各種EC2的API挽霉,接著API服務(wù)器便通過消息隊列把請求送達(dá)至云內(nèi)目標(biāo)設(shè)施進(jìn)行處理。作為對EC2-api的替代变汪,用戶也可以使用OpenStack的原生API侠坎,我們把它叫做“OpenStack API”。
2)消息隊列(Rabbit MQ Server)
OpenStack內(nèi)部在遵循AMQP(高級消息隊列協(xié)議)的基礎(chǔ)上采用消息隊列進(jìn)行通信裙盾。Nova對請求應(yīng)答進(jìn)行異步調(diào)用实胸,當(dāng)請求接收后便則立即觸發(fā)一個回調(diào)。由于使用了異步通信番官,不會有用戶的動作被長置于等待狀態(tài)童芹。例如,啟動一個實例或上傳一份鏡像的過程較為耗時鲤拿,API調(diào)用就將等待返回結(jié)果而不影響其它操作,在此異步通信起到了很大作用署咽,使整個系統(tǒng)變得更加高效近顷。
3)調(diào)度器(nova-scheduler)
調(diào)度器負(fù)責(zé)把nova-API調(diào)用送達(dá)給目標(biāo)。調(diào)度器以名為“nova-schedule”的守護(hù)進(jìn)程方式運行宁否,并根據(jù)調(diào)度算法從可用資源池中恰當(dāng)?shù)剡x擇運算服務(wù)器窒升。有很多因素都可以影響調(diào)度結(jié)果,比如負(fù)載慕匠、內(nèi)存饱须、子節(jié)點的遠(yuǎn)近、CPU架構(gòu)等等台谊。強(qiáng)大的是nova調(diào)度器采用的是可插入式架構(gòu)蓉媳。
目前nova調(diào)度器使用了幾種基本的調(diào)度算法:
隨機(jī)化:主機(jī)隨機(jī)選擇可用節(jié)點;
可用化:與隨機(jī)相似锅铅,只是隨機(jī)選擇的范圍被指定酪呻;
簡單化:應(yīng)用這種方式鄙皇,主機(jī)選擇負(fù)載最小者來運行實例鸭廷。負(fù)載數(shù)據(jù)可以從別處獲得讲仰,如負(fù)載均衡服務(wù)器庙洼。
4)運算工作站(nova-compute)
運算工作站的主要任務(wù)是管理實例的整個生命周期柬赐。他們通過消息隊列接收請求并執(zhí)行移袍,從而對實例進(jìn)行各種操作润绵。在典型實際生產(chǎn)環(huán)境下葫慎,會架設(shè)許多運算工作站塑径,根據(jù)調(diào)度算法女坑,一個實例可以在可用的任意一臺運算工作站上部署。
5)網(wǎng)絡(luò)控制器(nova-network)
網(wǎng)絡(luò)控制器處理主機(jī)的網(wǎng)絡(luò)配置统舀,例如IP地址分配堂飞,配置項目VLAN灌旧,設(shè)定安全群組以及為計算節(jié)點配置網(wǎng)絡(luò)。
6)卷工作站(nova-volume)
卷工作站管理基于LVM的 實例卷绰筛,它能夠為一個實例創(chuàng)建枢泰、刪除、附加卷铝噩,也可以從一個實例中分離卷衡蚂。卷管理為何如此重要?因為它提供了一種保持實例持續(xù)存儲的手段骏庸,比如當(dāng)結(jié)束一個 實例后毛甲,根分區(qū)如果是非持續(xù)化的,那么對其的任何改變都將丟失具被〔D迹可是,如果從一個實例中將卷分離出來一姿,或者為這個實例附加上卷的話七咧,即使實例被關(guān)閉,數(shù)據(jù) 仍然保存其中叮叹。這些數(shù)據(jù)可以通過將卷附加到原實例或其他實例的方式而重新訪問艾栋。
因此,為了日后訪問蛉顽,重要數(shù)據(jù)務(wù)必要寫入卷中蝗砾。這種應(yīng)用對于數(shù)據(jù)服務(wù)器實例的存儲而言,尤為重要携冤。
OpenStack鏡像服務(wù)器----Glance
OpenStack鏡像服務(wù)器是一套虛擬機(jī)鏡像發(fā)現(xiàn)悼粮、注冊、檢索系統(tǒng)曾棕,我們可以將鏡像存儲到以下任意一種存儲中:
本地文件系統(tǒng)(默認(rèn))
S3直接存儲
S3對象存儲(作為S3訪問的中間渠道)
OpenStack對象存儲等等矮锈。
功能及特點:
提供鏡像相關(guān)服務(wù)。
Glance構(gòu)件:
1)Glance-API:
主要負(fù)責(zé)接收響應(yīng)鏡像管理命令的Restful請求睁蕾,分析消息請求信息并分發(fā)其所帶的命令(如新增苞笨,刪除,更新等)子眶。默認(rèn)綁定端口是9292瀑凝。
2)Glance-Registry:
主要負(fù)責(zé)接收響應(yīng)鏡像元數(shù)據(jù)命令的Restful請求。分析消息請求信息并分發(fā)其所帶的命令(如獲取元數(shù)據(jù)臭杰,更新元數(shù)據(jù)等)粤咪。默認(rèn)綁定的端口是9191。
OpenStack存儲設(shè)施----Swift
Swift為OpenStack提供一種分布式渴杆、持續(xù)虛擬對象存儲寥枝,它類似于Amazon Web Service的S3簡單存儲服務(wù)宪塔。Swift具有跨節(jié)點百級對象的存儲能力。Swift內(nèi)建冗余和失效備援管理囊拜,也能夠處理歸檔和媒體流某筐,特別是對大數(shù)據(jù)(千兆字節(jié))和大容量(多對象數(shù)量)的測度非常高效。
swift功能及特點:
海量對象存儲
大文件(對象)存儲
數(shù)據(jù)冗余管理
歸檔能力-----處理大數(shù)據(jù)集
為虛擬機(jī)和云應(yīng)用提供數(shù)據(jù)容器
處理流媒體
對象安全存儲
備份與歸檔
良好的可伸縮性
Swift組件
Swift賬戶
Swift容器
Swift對象
Swift代理
Swift RING
Swift代理服務(wù)器
用戶都是通過Swift-API與代理服務(wù)器進(jìn)行交互冠跷,代理服務(wù)器正是接收外界請求的門衛(wèi)南誊,它檢測合法的實體位置并路由它們的請求。
此外蜜托,代理服務(wù)器也同時處理實體失效而轉(zhuǎn)移時抄囚,故障切換的實體重復(fù)路由請求。
Swift對象服務(wù)器
對象服務(wù)器是一種二進(jìn)制存儲橄务,它負(fù)責(zé)處理本地存儲中的對象數(shù)據(jù)的存儲幔托、檢索和刪除。對象都是文件系統(tǒng)中存放的典型的二進(jìn)制文件蜂挪,具有擴(kuò)展文件屬性的元數(shù)據(jù)(xattr)重挑。
注意:xattr格式被Linux中的ext3/4,XFS锅劝,Btrfs,JFS和ReiserFS所支持蟆湖,但是并沒有有效測試證明在XFS故爵,JFS,ReiserFS隅津,Reiser4和ZFS下也同樣能運行良好诬垂。不過,XFS被認(rèn)為是當(dāng)前最好的選擇伦仍。
Swift容器服務(wù)器
容器服務(wù)器將列出一個容器中的所有對象结窘,默認(rèn)對象列表將存儲為SQLite文件(譯者注:也可以修改為MySQL,安裝中就是以MySQL為例)充蓝。容器服務(wù)器也會統(tǒng)計容器中包含的對象數(shù)量及容器的存儲空間耗費隧枫。
Swift賬戶服務(wù)器
賬戶服務(wù)器與容器服務(wù)器類似,將列出容器中的對象谓苟。
Ring(索引環(huán))
Ring容器記錄著Swift中物理存儲對象的位置信息官脓,它是真實物理存儲位置的實體名的虛擬映射,類似于查找及定位不同集群的實體真實物理位置的索引服務(wù)涝焙。這里所謂的實體指賬戶卑笨、容器、對象仑撞,它們都擁有屬于自己的不同的Rings赤兴。
OpenStack管理的Web接口----Horizon
Horizon是一個用以管理妖滔、控制OpenStack服務(wù)的Web控制面板,它可以管理實例桶良、鏡像座舍、創(chuàng)建密匙對,對實例添加卷艺普、操作Swift容器等簸州。除此之外,用戶還可以在控制面板中使用終端(console)或VNC直接訪問實例歧譬。
總之岸浑,Horizon具有如下一些特點:
實例管理:創(chuàng)建、終止實例瑰步,查看終端日志矢洲,VNC連接,添加卷等
訪問與安全管理:創(chuàng)建安全群組缩焦,管理密匙對读虏,設(shè)置浮動IP等
偏好設(shè)定:對虛擬硬件模板可以進(jìn)行不同偏好設(shè)定
鏡像管理:編輯或刪除鏡像
查看服務(wù)目錄
管理用戶、配額及項目用途
用戶管理:創(chuàng)建用戶等
卷管理:創(chuàng)建卷和快照
對象存儲處理:創(chuàng)建袁滥、刪除容器和對象
為項目下載環(huán)境變量