簡(jiǎn)介
現(xiàn)在Openstack在虛擬化管理方面已經(jīng)非常成熟。借助nova,我們可以創(chuàng)建虛擬機(jī)、枚舉虛擬設(shè)備、管理電源狀態(tài)和安裝操作系統(tǒng)。但是,有時(shí)虛擬機(jī)無法滿足要求。例如,以下情況需要直接使用物理機(jī):
高性能計(jì)算集群。
計(jì)算任務(wù)需要訪問無法虛擬化的硬件設(shè)備。
數(shù)據(jù)庫主機(jī)(一些數(shù)據(jù)庫在虛擬機(jī)管理程序中效率低下)。
單租戶、專用硬件、安全性、可靠性和其他控制要求。
快速部署云基礎(chǔ)設(shè)施。
然而,在物理機(jī)管理方面還沒有成熟的解決方案。在這種背景下,諷刺(Articular,裸機(jī)預(yù)配置)應(yīng)運(yùn)而生,它可以解決物理機(jī)的添加、刪除、電源管理、安裝和部署等問題。諷刺提供了一系列常用的驅(qū)動(dòng),并為廠商開發(fā)自己的驅(qū)動(dòng)提供了插件機(jī)制,使得它幾乎支持所有的硬件。
部署物理機(jī)的概念和nova部署虛擬機(jī)的概念是一樣的,都是通過創(chuàng)建虛擬機(jī)來觸發(fā)的,只是底層nova-scheduler和nova- compute驅(qū)動(dòng)方式不同。虛擬機(jī)底層驅(qū)動(dòng)采用libvirt的虛擬化技術(shù),物理機(jī)采用iron技術(shù)。鐵可以看作是一套Hypervisor API,功能類似libvirt。
裸金屬的概念最早出現(xiàn)在nova。物理機(jī)和虛擬機(jī)管理有很多相似之處。例如,物理機(jī)和虛擬機(jī)都需要通電和斷電、安裝和部署、添加和刪除。為了避免重復(fù)造輪,他們?cè)趎ova中實(shí)現(xiàn)了一個(gè)物理機(jī)驅(qū)動(dòng),從而把物理機(jī)管理作為計(jì)算資源管理的一個(gè)子集。后來,我發(fā)現(xiàn)這個(gè)有個(gè)問題:
早期的時(shí)候,baremetal作為一個(gè)驅(qū)動(dòng),有自己的數(shù)據(jù)庫,同一個(gè)項(xiàng)目的兩個(gè)數(shù)據(jù)庫不適合。
在部署和管理裸機(jī)的過程中,有大量的信息需要存儲(chǔ),這與部署和管理虛擬機(jī)是不同的。很難通過nova api獲得這些信息。剝離裸機(jī)有助于在裸機(jī)和虛擬機(jī)部署之間劃清界限。
有時(shí)候裸機(jī)需要做一些特殊的動(dòng)作,比如發(fā)現(xiàn),硬件raid配置,固件更新,預(yù)燒,這些都不適合nova。更好的方法是在這些操作完成后,在nova中注冊(cè)nova信息作為可用資源,最后通過nova boot調(diào)用這些資源。
經(jīng)過多次討論,社區(qū)開始分離裸機(jī),命名為Iron。它從冰室版進(jìn)入孵化項(xiàng)目,在朱諾版與Nova融合。完成項(xiàng)目的畢業(yè)評(píng)審后,正式以Kilo版本集成到openstack項(xiàng)目中。未來將通過nova調(diào)用Iron api,實(shí)現(xiàn)對(duì)物理機(jī)資源的管理和控制。
傳統(tǒng)的虛擬機(jī)管理程序通常包括創(chuàng)建虛擬機(jī)、枚舉虛擬設(shè)備、管理電源、加載操作系統(tǒng)等功能。相應(yīng)的,諷刺可以看作是一個(gè)虛擬機(jī)管理程序API結(jié)合多個(gè)驅(qū)動(dòng)來操作物理機(jī)提供類似的操作,所以諷刺可以看作是Nova使用的一個(gè)虛擬機(jī)管理程序驅(qū)動(dòng)。
結(jié)構(gòu)
項(xiàng)目構(gòu)成
鐵:包括鐵-api和鐵-導(dǎo)體過程。
python-ironic client:python clinet和CLI .
Iron-Python-agent:在部署ramdisk中運(yùn)行的Python程序,用于執(zhí)行一系列部署動(dòng)作。
Pyghmi:一個(gè)python IPMI庫,可以代替IPMItool。
諷刺-檢查員:硬件自檢工具。
鐵庫:鐵的一般庫函數(shù)。
諷刺-網(wǎng)絡(luò)客戶端:網(wǎng)絡(luò)客戶端。
Iron-ui:鐵的地平線插件。
Bifrost:一組只運(yùn)行iron的Ansible腳本。
概念架構(gòu)(與其他組件的關(guān)系)
邏輯架構(gòu)(與其他組件的調(diào)用關(guān)系)
諷刺性服務(wù)由以下組件組成。
諷刺API,RESTful API服務(wù),管理員和其他服務(wù)通過它與iron進(jìn)行交互。
反諷導(dǎo)體,完成鐵服大部分工作,通過API對(duì)外開放功能,通過RPC與反諷API交互;負(fù)責(zé)與其他組件的交互。
驅(qū)動(dòng),真正管理物理機(jī)的模塊,通過一系列的驅(qū)動(dòng)支持不同的硬件。
用于存儲(chǔ)資源信息的數(shù)據(jù)庫。
信息排隊(duì)
部署架構(gòu)
云平臺(tái)管理員可以使用RESTful API注冊(cè)硬件,制定硬件屬性,如MAC地址、IPMI證書等。您可以打開多個(gè)API服務(wù)實(shí)例。
由于諷刺導(dǎo)體是唯一需要訪問數(shù)據(jù)層和IPMI控制層的服務(wù),出于安全原因,最好將導(dǎo)體服務(wù)放在獨(dú)立的主機(jī)上。為了支持各種驅(qū)動(dòng)程序和管理故障遷移,可以有多個(gè)導(dǎo)體實(shí)例,每個(gè)導(dǎo)體實(shí)例可以運(yùn)行多個(gè)驅(qū)動(dòng)程序。
信息發(fā)送
每個(gè)指揮實(shí)例都希望在啟動(dòng)時(shí)向數(shù)據(jù)庫注冊(cè)自己。注冊(cè)的信息包括該實(shí)例支持的驅(qū)動(dòng)程序列表,并定期更新自己記錄的時(shí)間戳,這使得所有服務(wù)知道哪些導(dǎo)體和驅(qū)動(dòng)程序可用。
根據(jù)它自己的驅(qū)動(dòng)程序,物理機(jī)器使用一致的哈希算法映射到一組導(dǎo)體上。部署任務(wù)通過RPC從應(yīng)用編程接口層分發(fā)到適當(dāng)?shù)闹笓]中心。當(dāng)指揮實(shí)例加入或退出集群時(shí),物理機(jī)會(huì)被重新映射到不同的指揮,這將觸發(fā)驅(qū)動(dòng)程序的各種操作,例如接管或清理操作。
預(yù)啟動(dòng)執(zhí)行環(huán)境(PXE)
預(yù)啟動(dòng)執(zhí)行環(huán)境。PXE是目前主流的無盤引導(dǎo)技術(shù),可以使計(jì)算機(jī)通過網(wǎng)絡(luò)引導(dǎo),而不是本地硬盤、光盤等設(shè)備。使用PXE系統(tǒng)安裝需要在主機(jī)上安裝PXE支持的網(wǎng)卡。然而,支持PXE的只讀存儲(chǔ)器芯片通常嵌入在當(dāng)前的網(wǎng)卡中。當(dāng)計(jì)算機(jī)啟動(dòng)時(shí),基本輸入輸出系統(tǒng)將首先調(diào)用PXE客戶端到內(nèi)存中執(zhí)行。PXE客戶端加載到內(nèi)存后,同時(shí)具有DHCP客戶端和TFTP客戶端的功能。DHCP客戶端將請(qǐng)求DHCP服務(wù)器為將要安裝該系統(tǒng)的主機(jī)分配ip地址,然后PXE客戶端將下載遠(yuǎn)程文件,通過TFTP本地運(yùn)行。
http://blog.csdn.net/miss_acha/article/details/50373040
https://technet.microsoft.com/zh-cn/library/cc732649
動(dòng)態(tài)主機(jī)配置協(xié)議
動(dòng)態(tài)主機(jī)配置協(xié)議是一種標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議,用于動(dòng)態(tài)分配網(wǎng)絡(luò)配置參數(shù),如網(wǎng)絡(luò)端口的IP地址。
http://network.51cto.com/art/201406/441752.htm
網(wǎng)絡(luò)引導(dǎo)程序(NBP)
網(wǎng)絡(luò)引導(dǎo)程序,NBP,與本地啟動(dòng)時(shí)通常使用的GRUB或LILO相同。和硬件驅(qū)動(dòng)環(huán)境的啟動(dòng)程序一樣,NBP負(fù)責(zé)將操作系統(tǒng)內(nèi)核下載到內(nèi)存中,然后通過網(wǎng)絡(luò)啟動(dòng)系統(tǒng)。
普通文件傳輸協(xié)議(TFTP)
在PXE環(huán)境下,TFTP是用來通過網(wǎng)絡(luò)下載NBP使用的DHCP服務(wù)器的信息。
智能平臺(tái)管理界面(IPMI)
IPMI(Intelligent Platform M anagement Interface)是一個(gè)開放的標(biāo)準(zhǔn)硬件管理接口規(guī)范,它使用嵌入式管理子系統(tǒng)進(jìn)行通信,而不依賴于主機(jī)操作系統(tǒng),這使得即使操作系統(tǒng)沒有響應(yīng)或加載,也可以打開和關(guān)閉以及提取信息。諷刺可以使用這項(xiàng)技術(shù)遠(yuǎn)程打開和關(guān)閉裸機(jī)或執(zhí)行其他操作,而不是依賴物理交換機(jī)或操作系統(tǒng)。
關(guān)于諷刺中的一些服務(wù)
諷刺api:接收REST請(qǐng)求并將其發(fā)送給諷刺指揮。
反光板:接收反光板的請(qǐng)求,創(chuàng)建、更新和刪除節(jié)點(diǎn),通過IPMI和ssh切換電源,或者部署裸機(jī)。
鐵-python-agent:裸機(jī)服務(wù)啟動(dòng)時(shí),如果從PXE啟動(dòng),機(jī)器可以從遠(yuǎn)程位置拉一個(gè)最低版本的Linux內(nèi)核或ramdisk,但是最低版本的Linux內(nèi)核功能較弱。如果是ramdisk,可以在上面安裝各種服務(wù)(也可以配置RAID),包括iron-python-agent。ramdisk中的鐵-python-agent提供了與諷刺導(dǎo)體相同的服務(wù)。
諷刺的命令行界面
應(yīng)用程序接口
依賴于節(jié)點(diǎn)(節(jié)點(diǎn))
添加、刪除和修改節(jié)點(diǎn)(列表、搜索、創(chuàng)建、更新和刪除)
合法性檢查
設(shè)置和清除維護(hù)狀態(tài)
設(shè)置和獲取引導(dǎo)設(shè)備
獲取節(jié)點(diǎn)的當(dāng)前綜合信息,包括電源、配置、raid、控制臺(tái)等。
改變電源狀態(tài)
更改節(jié)點(diǎn)供應(yīng)狀態(tài)(管理、提供、檢查、清理、活動(dòng)、重建、刪除(已刪除)、中止)
設(shè)置磁盤陣列
開始,停止,獲得控制臺(tái)
檢查并調(diào)用制造商定制的方法(直通方法)
端口相關(guān)(端口)
添加、刪除和刪除物理端口(列出、搜索、創(chuàng)建、更新和刪除),創(chuàng)建新端口時(shí),應(yīng)指定端口的物理地址(通常是媒體訪問控制地址)以與節(jié)點(diǎn)綁定。
檢查連接到節(jié)點(diǎn)的端口
駕駛員相關(guān)(駕駛員)
枚舉所有驅(qū)動(dòng)程序
查看驅(qū)動(dòng)程序的詳細(xì)信息和屬性
查看并致電制造商的司機(jī)
機(jī)箱(機(jī)箱,一組節(jié)點(diǎn))
添加、刪除和檢查機(jī)箱
此資源類型用于對(duì)節(jié)點(diǎn)進(jìn)行分組。目前只具有枚舉一組節(jié)點(diǎn)的功能。我不贊成用這種類型,以后可能會(huì)去掉。
導(dǎo)體
iron-Conductor是iron中最重要的模塊,通過iron-API提供外部功能,通過RPC與iron-API通信,負(fù)責(zé)大部分工作,包括與中子通信為物理機(jī)配置網(wǎng)絡(luò)信息,與switch通信獲取圖像。iron-Conductor是iron中最重要的模塊,通過iron-API提供外部功能,通過RPC與iron-API通信,負(fù)責(zé)大部分工作,包括與中子通信為物理機(jī)配置網(wǎng)絡(luò)信息,與switch通信獲取圖像,與煤渣和Swift通信為物理機(jī)提供存儲(chǔ)。用于儲(chǔ)存。
同時(shí)控制物理機(jī)狀態(tài)的變化過程。
在高可用性方面,導(dǎo)體采用一致的哈希算法,確保在添加和退出導(dǎo)體節(jié)點(diǎn)時(shí),裸機(jī)節(jié)點(diǎn)不受影響。
分貝
MySQL用來存儲(chǔ)物理機(jī)和驅(qū)動(dòng)的狀態(tài)信息,可以用其他數(shù)據(jù)庫代替。
司機(jī)
驅(qū)動(dòng)程序是真正操作物理機(jī)器的模塊。諷刺的驅(qū)動(dòng)是以插件的形式設(shè)計(jì)的,廠商可以實(shí)現(xiàn)自己的驅(qū)動(dòng),為自己的設(shè)備提供特殊的功能。要實(shí)現(xiàn)自己的驅(qū)動(dòng),只需要實(shí)現(xiàn)幾個(gè)相關(guān)的方法。
參考文獻(xiàn):
https://wiki.openstack.org/wiki/Ironic
http://www.cnblogs.com/menkeyi/p/6063547.html
1.《ironic ironic架構(gòu)及相關(guān)技術(shù)簡(jiǎn)介》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請(qǐng)聯(lián)系頁腳下方聯(lián)系方式。
2.《ironic ironic架構(gòu)及相關(guān)技術(shù)簡(jiǎn)介》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來源地址,http://f99ss.com/keji/1192291.html