上一篇文章裡我簡單介紹了一下「裸金屬」的概念,提到了 OpenStack 中的核心專案 Ironic,今天簡單來聊聊它。
Bare Metal 所以用 Bear 來做吉祥物,諧音梗很好玩嘛
在介紹 Ironic 之前,我們必須要對伺服器是怎麼管理的有個基本認識。
伺服器的遠端管理
伺服器放在機房裡,平常都是遠端使用。但是難免有個系統當機、硬體損壞等情況,或者需要重灌系統的時候,這時候就沒法遠端了,需要人到機房去操作了。
如果只有少量機器倒也罷了,資料中心裡的伺服器往往成百上千,總是要靠人去處理這些事情很不方便也不安全。
運維人員需要通過網路來遠端操作和配置伺服器,例如重啟機器和重灌系統。
這樣就會遇到對普通人來講有點困惑的問題:
如何在伺服器關機的狀態下通過網路操作它?
BMC 和 IPMI
顯然,我們需要另外一個獨立的系統,它不受平常這個系統關機的影響。這個獨立的系統在伺服器通過額外的硬體控制器上來實現,即基板管理控制器(Baseboard Manager Controller),簡稱 BMC。
我們還需要通過一個介面來和 BMC
互動,其中最廣泛使用的就是 IPMI
,全稱是 Intelligent Platform Management Interface,即智慧平臺管理介面。有的品牌伺服器還有其它介面,例如 Dell 的 iDRAC
,HP 的 iLo
,這些遠端網路管理介面基本都是 IPMI
相容。
因為這套管理系統和使用者業務使用的系統獨立,所以又稱為 帶外(Out of Band) 系統。
這裡我們不用過多關注這些細節,只要知道平常我們說起 BMC
或 IPMI
或 帶外系統
的時候,基本上就是在說同一個東西,就是遠端管理伺服器的介面。
通過 BMC 遠端操控伺服器是裸金屬服務的技術前提,這個是伺服器的標配,一般 PC 機是沒有的,所以它們沒法通過裸金屬服務來管理。
IPMI 面世已經超過了 20 年,在 2014 年又出現了新的帶外管理標準 Redfish,從長遠的時間看,會逐漸替代 IPMI。不過 IPMI 現在使用仍然十分廣泛。
BMC 的基本功能
伺服器一旦插上電源,BMC
就開始上電,可以工作了。
BMC 通過獨立的網口通訊,一般預設啟動後通過 DHCP 獲取 IP。如果沒有配置 DHCP 服務,則需要在伺服器啟動時,通過 BIOS 配置靜態的地址,然後就可以通過瀏覽器直接訪問了:
使用者名稱和初始密碼一般在伺服器的使用者手冊裡會有提及,或者可以直接聯絡廠商獲取。
登入進去後,不同品牌的伺服器所呈現的頁面會有較大差別,但是整體功能大同小異,主要就是檢視伺服器的硬體資訊,當前狀態等等。
這裡最實用的功能當屬 KVM(Keyboard Video Mouse) 系統。注意,這裡和 KVM 虛擬化是兩碼事。通過 KVM 我們可以遠端和伺服器直接互動,就和在機房裡接了顯示器和鍵盤一樣。
Linux KVM 虛擬化技術的縮寫是 Kernel-based Virtual Machine
在 KVM 系統中可以掛載本地的 iso 映象檔案,完成作業系統的安裝。不過這種互動式安裝系統效率太低,實際應用中我們需要通過網路自動化安裝系統。
PXE 網路啟動
想要通過網路安裝作業系統,就必須要介紹一下 PXE。
PXE 全稱 Pre-boot Execution Environment,是由 Intel 設計的協議,它可以使計算機通過網路啟動。協議分為 client 和 server 兩端,client 在網路卡的 ROM 中,當計算機引導時,BIOS 把 PXE client 調入記憶體執行,並顯示出命令選單,經使用者選擇後,PXE client 將放置在遠端的作業系統通過網路下載到本地執行。
典型的 PXE 啟動流程大致如下:
PXE 啟動開始通過 DHCP 獲取 IP,所以需要有一臺 DHCP 伺服器 隨著 DHCP 響應返回的除了 IP 還有 PXE 相關的配置資訊,用來指示下一步去哪裡 根據上一步的資訊去 TFTP 伺服器上請求下載 Linux 引導系統 TFTP 伺服器事先準備好包括 Linux 核心在內的檔案供下載 進一步下載作業系統檔案,包括自動應答檔案 完成作業系統安裝
在雲端計算技術出現之前,通過 PXE + Kickstart 來自動部署已經是運維必備的技術了。
OpenStack Ironic 在此基礎上,做了更多的優化,例如在安裝系統時,不需要再用到 kickstart 自動應答檔案,而是直接通過 iSCSI 掛載磁碟,把事先做好的磁碟映象克隆過去,免去了系統安裝的過程,更加高效省時。
下面終於可以來看看 Ironic 長什麼樣了。
Ironic 的架構
Ironic 系統就是一個典型的 OpenStack 服務架構,包含了一個 API 元件,和一個處理後臺任務的 Conductor 元件,Conductor 通過各種 Driver 完成實際的工作。
它和 OpenStack 的其它核心元件需要完成一系列的互動,獲取所需的資源:
從圖中我們可以看出,Ironic 和 OpenStack 的核心模組 Nova、Neutron、Glance、Cinder 都有互動。
熟悉 OpenStack 的人看著上面的圖應該很眼熟,和建立虛機幾乎完全一樣,就是把 VM
換成了 Bare Metal
。
最終裸金屬的部署流程如圖所示:
在 Dashboard 上操作
裸金屬伺服器在系統中有兩種存在方式。
受管理時被稱之為 節點(Node),有點類似於計算節點,此時它是屬於計算資源。使用者新建例項時,裸金屬節點和計算節點一起參與排程,區別在於計算節點是在上面建立虛擬機器,而裸金屬節點一旦被排程就完全佔用。
節點只有管理員可以操作。
使用者在使用裸金屬資源的時候,體驗和建立虛機沒有兩樣,部署成功後的裸金屬和虛擬機器一樣都叫 例項(Instance):
在上圖中,除了裸金屬使用的映象(Image)和例項型別(Flavor)都和虛機例項有所不同,但是整個的操作流程和使用體驗是完全一致的。
小結
今天浮光掠影的介紹了一下 Ironic ,希望可以讓大家有個初步的認識。
其中涉及到不少 Linux 運維相關的技術,在嘗試 Ironic 之前,有興趣的人可以參考網路教程動手實踐一番,相信會對理解裸金屬的部署過程有很大幫助。
感謝您的閱讀,請繼續關注 「雲端計算實驗室」, \m/ ʕ•͡ᴥ•ʔ \m/
本文使用 mdnice 排版