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