1 方案背景和挑戰(zhàn)
Openstack作為開源云計(jì)算領(lǐng)域的領(lǐng)軍項(xiàng)目,憑借其強(qiáng)大的功能、靈活的架構(gòu)以及活躍的社區(qū)支持,在全球范圍內(nèi)得到了廣泛的采用。通過Openstack,企業(yè)和云服務(wù)提供商可以更加高效地管理和利用計(jì)算資源、存儲(chǔ)資源和網(wǎng)絡(luò)資源,實(shí)現(xiàn)業(yè)務(wù)的快速部署和靈活擴(kuò)展,從而贏得市場(chǎng)競(jìng)爭(zhēng)的先機(jī)。
Ironic作為Openstack的關(guān)鍵組件,提供了對(duì)裸金屬服務(wù)的全面管理。通過Ironic,用戶可以在云環(huán)境中直接控制和管理實(shí)體硬件,實(shí)現(xiàn)裸金屬服務(wù)器的自動(dòng)化部署、管理和監(jiān)控。
原生的Ironic 采用本地物理盤進(jìn)行啟動(dòng),其首先將遠(yuǎn)程鏡像下載并寫入到本地物理盤中,然后再?gòu)谋镜乇P啟動(dòng)進(jìn)入系統(tǒng)。過程如下:
可以看到,其重點(diǎn)是通過方案具有以下問題和挑戰(zhàn):
a. 部署啟動(dòng)周期長(zhǎng)(20分鐘左右),業(yè)務(wù)敏捷性低,用戶體驗(yàn)差
(1)兩次啟動(dòng):在部署裸金屬服務(wù)器時(shí),首先會(huì)通過PXE啟動(dòng)一個(gè)小的、臨時(shí)的系統(tǒng)環(huán)境,IPA會(huì)啟動(dòng)并執(zhí)行部署任務(wù)。部署完成后,服務(wù)器會(huì)從已安裝的操作系統(tǒng)啟動(dòng)。這兩次啟動(dòng)過程增加了整體部署時(shí)間。
(2)鏡像下載:IPA需要從Glance下載完整的用戶鏡像到內(nèi)存中或臨時(shí)存儲(chǔ),這個(gè)下載過程取決于鏡像的大小和網(wǎng)絡(luò)條件,可能會(huì)非常耗時(shí)。對(duì)于大型鏡像或網(wǎng)絡(luò)條件不佳的環(huán)境,這個(gè)步驟可能成為瓶頸。
(3)鏡像寫入本地盤:下載完鏡像后,IPA還需要將這個(gè)鏡像寫入到服務(wù)器的本地磁盤上。這個(gè)過程也取決于磁盤的寫入速度和鏡像的大小,可能會(huì)進(jìn)一步增加部署時(shí)間。
b. 消耗大量帶寬,影響整體網(wǎng)絡(luò)應(yīng)用性能
全量下載系統(tǒng)鏡像會(huì)消耗大量的網(wǎng)絡(luò)帶寬,尤其是在多節(jié)點(diǎn)部署或頻繁更新鏡像的場(chǎng)景下。這不僅增加了網(wǎng)絡(luò)負(fù)載,還可能影響其他網(wǎng)絡(luò)應(yīng)用的性能。
c. 系統(tǒng)盤無法擴(kuò)容,敏捷性和彈性低
在當(dāng)前部署模型中,用戶鏡像被直接寫入到服務(wù)器的本地磁盤上,并且通常是作為一個(gè)固定的分區(qū)或文件系統(tǒng)來配置的。這意味著如果后續(xù)需要增加系統(tǒng)盤的容量(例如,因?yàn)閿?shù)據(jù)量增長(zhǎng)或應(yīng)用需求變化),可能需要重新部署整個(gè)服務(wù)器,這既耗時(shí)又復(fù)雜。
d. 依賴外部組件,增加系統(tǒng)復(fù)雜度和成本
部署過程依賴于多個(gè)外部組件,如PXE、TFTP、DHCP等,這些組件需要正確配置和維護(hù)。任何一個(gè)組件的故障都可能導(dǎo)致部署失敗,增加了系統(tǒng)的復(fù)雜性和維護(hù)成本。
2 方案介紹
2.1 整體架構(gòu)
為了解決OpenStack Ironic裸金屬服務(wù)方案的問題,中科馭數(shù)基于DPU開發(fā)了ironic裸金屬服務(wù)解決方案,整體架構(gòu)圖如下:
在本方案中,DPU支持裸金屬服務(wù)器的網(wǎng)絡(luò)和存儲(chǔ)資源虛擬化,使得物理服務(wù)器能夠像虛擬機(jī)一樣靈活配置,動(dòng)態(tài)添加或刪除網(wǎng)卡、硬盤等資源。這為裸金屬服務(wù)器提供了類似云服務(wù)的彈性,同時(shí)保持了物理機(jī)級(jí)別的性能。另外,DPU能夠管理遠(yuǎn)程存儲(chǔ)資源,如云盤,使得裸金屬服務(wù)器可以使用云存儲(chǔ)服務(wù),同時(shí)通過DPU加速存儲(chǔ)I/O,提高讀寫性能,使得云盤接近本地存儲(chǔ)的體驗(yàn)。
本方案主要涉及glance、cinder、nova、neutron、ironic模塊。仍然使用ironic?node資源管理裸金屬實(shí)例。在開源ironic組件(ironic-api、ironic-conductor)之外,自研了ironic-dpu-agent組件,運(yùn)行在每個(gè)裸金屬節(jié)點(diǎn)的DPU Soc中,用于管理裸金屬實(shí)例的存儲(chǔ)、網(wǎng)絡(luò)資源。本方案主要包含以下系統(tǒng)組件:
- Nova:對(duì)接ironic,為裸金屬提供和虛擬機(jī)一致的操作。
- Ironic-api:裸金屬rest api服務(wù)。
- Ironic-conductor:裸金屬實(shí)例的任務(wù)控制服務(wù),負(fù)責(zé)裸金屬開關(guān)機(jī)、重啟、部署等任務(wù)。
- Ironic-dpu-agent:運(yùn)行在DPU Soc上,與ironic-conductor通過RPC通信,負(fù)責(zé)管理本節(jié)點(diǎn)裸金屬實(shí)例的存儲(chǔ)、網(wǎng)絡(luò)資源。在裸金屬部署階段,接收ironic-conductor下發(fā)的部署指令,在DPU內(nèi)連接云盤并掛載到host。在裸金屬運(yùn)行時(shí),接收ironic-conductor下發(fā)的添加、刪除磁盤指令,為host動(dòng)態(tài)添加、刪除磁盤。
- Volume-attacher:負(fù)責(zé)裸金屬磁盤的掛載、卸載操作。
- Neutron:OpenStack網(wǎng)絡(luò)服務(wù),為裸金屬實(shí)例提供network、subnet、port管理功能。
- Cinder:OpenStack塊存儲(chǔ)服務(wù),為裸金屬實(shí)例提供云盤創(chuàng)建、刪除等管理功能。
- Glance:OpenStack鏡像管理服務(wù),為裸金屬實(shí)例提供鏡像上傳、下載功能。
2.2 方案描述
在基于DPU的OpenStack裸金屬服務(wù)方案下,實(shí)現(xiàn)了裸金屬的部署啟動(dòng)、云盤熱插拔、cloudinit、冷遷移等常用功能,以下對(duì)主要部分做詳細(xì)描述,并和傳統(tǒng)ironic方案進(jìn)行部分對(duì)比。
2.2.1 基于DPU的無盤啟動(dòng)方案
在基于 DPU 的方案中,我們采用直接掛載云盤系統(tǒng)的方式,不使用本地盤,過程如下:
- nova-api接收到創(chuàng)建裸金屬實(shí)例請(qǐng)求,調(diào)用nova-scheduler調(diào)度出ironic node。
- nova-scheduler調(diào)用nova-compute孵化裸金屬實(shí)例。
- nova-compute根據(jù)指定的鏡像,調(diào)用cinder創(chuàng)建出系統(tǒng)盤volume,cinder調(diào)用后端存儲(chǔ)以快照方式克隆鏡像卷,并不是完整拷貝,速度很快,一般在數(shù)秒內(nèi)完成。
- nova-compute的ironic virt driver根據(jù)指定的cinder volume在ironic中創(chuàng)建node的volume target,作為裸金屬實(shí)例的云盤。之后調(diào)用ironic-api部署node。
- ironic-conductor的dpu deploy driver調(diào)用node所對(duì)應(yīng)的ironic-dpu-agent執(zhí)行部署任務(wù)。
- ironic-dpu-agent根據(jù)volume target在dpu內(nèi)調(diào)用spdk映射云盤,給host側(cè)掛載對(duì)應(yīng)的系統(tǒng)盤。
- 系統(tǒng)盤掛載完成后,ironic-conductor通過BMC重啟裸金屬節(jié)點(diǎn),此時(shí)BIOS能掃描到系統(tǒng)盤,啟動(dòng)進(jìn)入系統(tǒng),裸金屬啟動(dòng)完成。
和 Ironic 傳統(tǒng)方案相比,沒有PXE過程,也只需啟動(dòng)一次。
2.2.2 存儲(chǔ)對(duì)接
Ironic 原生存儲(chǔ)對(duì)接方案:
ironic的存儲(chǔ)對(duì)接在host側(cè),host網(wǎng)絡(luò)需和存儲(chǔ)網(wǎng)絡(luò)連通,且host中需安裝相關(guān)組件,如下圖:
為了完成云盤的掛載/卸載,host 中需要安裝一個(gè) ironic-agent,其調(diào)用 iscsi-initiator 或相應(yīng)的存儲(chǔ)客戶端完成云盤的掛載/卸載操作。Ironic 的 StorageDriver 會(huì)配置好存儲(chǔ)服務(wù)端,并調(diào)用 ironic-agent 完成云盤的操作。
基于DPU的存儲(chǔ)對(duì)接方案:
在基于DPU 的方案中,系統(tǒng)盤和數(shù)據(jù)盤統(tǒng)一使用云盤,云盤由volume-attacher組件進(jìn)行分配掛載。裸金屬上看到的盤,是DPU 上的 spdk 通過 PCIE 模擬的設(shè)備。存儲(chǔ)網(wǎng)絡(luò)也是由 ovs 連接的和配置的。如下圖所示:
相比于 Ironic 方案,DPU 方案有以下優(yōu)勢(shì):
- 存儲(chǔ)網(wǎng)絡(luò)統(tǒng)一走DPU側(cè),隱藏了存儲(chǔ)網(wǎng)絡(luò)的細(xì)節(jié),并可利用 DPU 進(jìn)行網(wǎng)絡(luò)加速;
- 兼容cinder后端存儲(chǔ),存儲(chǔ)系統(tǒng)無需適配。云盤是通過cinder創(chuàng)建的,volume-attacher配置spdk連接云盤,模擬出對(duì)應(yīng)的磁盤給到裸金屬。
2.2.3 硬盤熱插拔
如Ironic存儲(chǔ)對(duì)接方案中所示,Ironic 中的 StorageDriver 調(diào)用 host 中的 ironic-agent 完成硬盤熱插拔,用戶鏡像需安裝相關(guān)依賴。
在基于?DPU 的方案中,由于裸金屬上的盤是 DPU 通過PCIE 模擬的,因此,通過動(dòng)態(tài)調(diào)整 DPU 上的 spdk 配置,即可實(shí)現(xiàn)硬盤的熱插拔。
3 方案測(cè)試結(jié)果
3.1 創(chuàng)建裸金屬實(shí)例
與創(chuàng)建虛擬機(jī)流程類似,選擇裸金屬的flavor和鏡像進(jìn)行創(chuàng)建。
可以看到bm01、bm02兩個(gè)裸金屬實(shí)例,均為active狀態(tài)。通過nova創(chuàng)建裸金屬實(shí)例,ironic node中會(huì)關(guān)聯(lián)instance uuid。
3.2 部署啟動(dòng)時(shí)間
我們定義裸金屬的部署啟動(dòng)時(shí)間為:下發(fā)創(chuàng)建裸金屬實(shí)例的命令,到裸金屬實(shí)例網(wǎng)絡(luò)IP可以ping通的時(shí)間。
在聯(lián)創(chuàng)萬(wàn)通 LCWT R7220 服務(wù)器上,鏡像 OS 為 Ubuntu 22.04 Server,內(nèi)核版本為5.15.0-106-generic 時(shí)測(cè)得的啟動(dòng)時(shí)間:從創(chuàng)建到可 ping 通共耗時(shí) 161 秒(2min41s)。
基于 DPU 的裸金屬服務(wù)方案啟動(dòng)時(shí)間在 2-3min 內(nèi),具體耗時(shí)取決于服務(wù)器類型和鏡像版本。相比之下,我們測(cè)試傳統(tǒng) Ironic 本地盤方式在 20min 以上。
3.3 添加磁盤
添加磁盤前,裸金屬系統(tǒng)內(nèi)看到的磁盤列表:
添加磁盤后,裸金屬系統(tǒng)內(nèi)看到的磁盤列表,nvme2n1是新添加的磁盤:
3.4 刪除磁盤
刪除磁盤前,裸金屬系統(tǒng)內(nèi)看到的磁盤列表:
刪除磁盤后,裸金屬系統(tǒng)內(nèi)看到的磁盤列表,nvme2n1被刪除:
3.5 存儲(chǔ) iops 和吞吐
測(cè)試結(jié)果如下:
分類 | 測(cè)試項(xiàng) | 寫iops | 寫吞吐 | 讀iops | 讀吞吐 |
隨機(jī)讀寫 | NVMe-OF+DPU+NVMe?盤 | 682k | 2662MiB/s | 736k | 2868MiB/s |
NVMe本地物理盤 | 684k | 2667MiB/s | 980k | 3849MiB/s | |
順序讀寫 | NVMe-OF+DPU+NVMe?盤 | 682k | 2667MiB/s | 705k | 2761MiB/s |
NVMe本地物理盤 | 686k | 2673MiB/s | 991k | 3892MiB/s |
各測(cè)試項(xiàng)說明:
- 測(cè)試項(xiàng)中的NVMe-OF均指NVMe-OF over RDMA
- NVMe-OF+DPU+NVMe盤:基于 DPU 通過NVMe-OF協(xié)議連接Target,Target 后端是 NVMe物理盤
- NVMe物理盤:直接對(duì)NVMe物理盤進(jìn)行測(cè)試
可以看到,基于NVMe-OF的卸載方式下,DPU可以達(dá)到和NVMe本地盤近似的性能,幾乎沒有性能損耗。
4 方案優(yōu)勢(shì)
基于DPU的方案相較于傳統(tǒng)的Ironic裸金屬方案,在多個(gè)方面展現(xiàn)出了顯著的優(yōu)勢(shì)。以下是這些優(yōu)勢(shì)的詳細(xì)描述:
a. 交付效率顯著提升,大幅改善最終用戶體驗(yàn)
云盤啟動(dòng)加速:傳統(tǒng)Ironic方案多采用本地盤啟動(dòng)方式,這一過程涉及到鏡像的下載、安裝及配置,耗時(shí)較長(zhǎng),通常需要20分鐘左右。而基于DPU的方案采用云盤啟動(dòng),通過預(yù)先配置好的云盤鏡像,可以極大地縮短啟動(dòng)時(shí)間至2-5分鐘。這種快速啟動(dòng)能力對(duì)于需要快速部署和擴(kuò)展的云環(huán)境尤為重要,能夠顯著提升資源交付的效率和靈活性。
b. 存算分離,提升服務(wù)敏捷性和彈性
基于DPU的方案實(shí)現(xiàn)了存儲(chǔ)與計(jì)算資源的分離,這種設(shè)計(jì)使得計(jì)算和存儲(chǔ)資源可以獨(dú)立擴(kuò)展和優(yōu)化。當(dāng)業(yè)務(wù)需求變化時(shí),可以迅速調(diào)整計(jì)算或存儲(chǔ)資源,而無需對(duì)整個(gè)系統(tǒng)進(jìn)行大規(guī)模的調(diào)整,從而提升了服務(wù)的敏捷性和彈性。此外,存算分離還有助于實(shí)現(xiàn)資源的更高效利用,避免了資源瓶頸和浪費(fèi)。這種特性對(duì)于需要快速響應(yīng)市場(chǎng)變化和靈活調(diào)整業(yè)務(wù)規(guī)模的云環(huán)境尤為重要。
c. 控制面與數(shù)據(jù)面分離,提升安全性和資源利用率
控制面與數(shù)據(jù)面下沉至DPU:通過將控制面和數(shù)據(jù)面處理任務(wù)下沉到DPU,不僅減輕了Host CPU的負(fù)擔(dān),還實(shí)現(xiàn)了對(duì)存儲(chǔ)網(wǎng)絡(luò)和后端存儲(chǔ)細(xì)節(jié)的隱藏。這種設(shè)計(jì)提升了系統(tǒng)的安全性,防止了潛在的安全威脅,還使得Host側(cè)的資源能夠完全專注于業(yè)務(wù)處理,從而提高了資源利用率。
不侵入用戶鏡像:基于DPU的方案不依賴于用戶鏡像進(jìn)行功能實(shí)現(xiàn),避免了因鏡像更新或修改導(dǎo)致的兼容性問題,同時(shí)也簡(jiǎn)化了用戶鏡像的管理和維護(hù)工作。
d. 架構(gòu)簡(jiǎn)化,降低復(fù)雜度和維護(hù)成本
不依賴PXE等組件:傳統(tǒng)Ironic方案可能需要依賴PXE(預(yù)啟動(dòng)執(zhí)行環(huán)境)等組件來實(shí)現(xiàn)網(wǎng)絡(luò)啟動(dòng)和鏡像部署。而基于DPU的方案則通過內(nèi)置的網(wǎng)絡(luò)和存儲(chǔ)功能,實(shí)現(xiàn)了更為簡(jiǎn)潔的架構(gòu)設(shè)計(jì),降低了系統(tǒng)的復(fù)雜度和維護(hù)成本。
e. 性能優(yōu)化,接近本地盤體驗(yàn)
硬件加速利用:DPU內(nèi)置了多種硬件加速功能,能夠充分利用這些特性來提升云盤的性能表現(xiàn)。從測(cè)試數(shù)據(jù)中可以看到,在基于DPU的方案中,云盤性能可以達(dá)到接近甚至等同于本地盤的性能水平,為用戶提供了更加流暢和高效的數(shù)據(jù)訪問體驗(yàn)。
綜上所述,基于DPU的方案在交付效率、存儲(chǔ)支持、安全性與資源利用率、架構(gòu)簡(jiǎn)化以及性能優(yōu)化等方面均展現(xiàn)出了顯著的優(yōu)勢(shì),為裸金屬云服務(wù)的發(fā)展提供了新的動(dòng)力和方向。
本方案來自于中科馭數(shù)軟件研發(fā)團(tuán)隊(duì),團(tuán)隊(duì)核心由一群在云計(jì)算、數(shù)據(jù)中心架構(gòu)、高性能計(jì)算領(lǐng)域深耕多年的業(yè)界資深架構(gòu)師和技術(shù)專家組成,不僅擁有豐富的實(shí)戰(zhàn)經(jīng)驗(yàn),還對(duì)行業(yè)趨勢(shì)具備敏銳的洞察力,該團(tuán)隊(duì)致力于探索、設(shè)計(jì)、開發(fā)、推廣可落地的高性能云計(jì)算解決方案,幫助最終客戶加速數(shù)字化轉(zhuǎn)型,提升業(yè)務(wù)效能,同時(shí)降低運(yùn)營(yíng)成本。
?