簡單聊聊 Ironic

DavyCloud發表於2020-09-26

上一篇文章裡我簡單介紹了一下「裸金屬」的概念,提到了 OpenStack 中的核心專案 Ironic,今天簡單來聊聊它。

Ironic 專案的吉祥物
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) 系統。

這裡我們不用過多關注這些細節,只要知道平常我們說起 BMCIPMI帶外系統 的時候,基本上就是在說同一個東西,就是遠端管理伺服器的介面。

通過 BMC 遠端操控伺服器是裸金屬服務的技術前提,這個是伺服器的標配,一般 PC 機是沒有的,所以它們沒法通過裸金屬服務來管理。

IPMI 面世已經超過了 20 年,在 2014 年又出現了新的帶外管理標準 Redfish,從長遠的時間看,會逐漸替代 IPMI。不過 IPMI 現在使用仍然十分廣泛。

BMC 的基本功能

伺服器一旦插上電源,BMC 就開始上電,可以工作了。

BMC 通過獨立的網口通訊,一般預設啟動後通過 DHCP 獲取 IP。如果沒有配置 DHCP 服務,則需要在伺服器啟動時,通過 BIOS 配置靜態的地址,然後就可以通過瀏覽器直接訪問了:

BMC 登入
BMC 登入

使用者名稱和初始密碼一般在伺服器的使用者手冊裡會有提及,或者可以直接聯絡廠商獲取。

BMC 頁面
BMC 頁面

登入進去後,不同品牌的伺服器所呈現的頁面會有較大差別,但是整體功能大同小異,主要就是檢視伺服器的硬體資訊,當前狀態等等。

這裡最實用的功能當屬 KVM(Keyboard Video Mouse) 系統。注意,這裡和 KVM 虛擬化是兩碼事。通過 KVM 我們可以遠端和伺服器直接互動,就和在機房裡接了顯示器和鍵盤一樣。

Linux KVM 虛擬化技術的縮寫是 Kernel-based Virtual Machine

在 KVM 系統中可以掛載本地的 iso 映象檔案,完成作業系統的安裝。不過這種互動式安裝系統效率太低,實際應用中我們需要通過網路自動化安裝系統。

KVM功能
KVM功能

PXE 網路啟動

想要通過網路安裝作業系統,就必須要介紹一下 PXE。

PXE 全稱 Pre-boot Execution Environment,是由 Intel 設計的協議,它可以使計算機通過網路啟動。協議分為 client 和 server 兩端,client 在網路卡的 ROM 中,當計算機引導時,BIOS 把 PXE client 調入記憶體執行,並顯示出命令選單,經使用者選擇後,PXE client 將放置在遠端的作業系統通過網路下載到本地執行。

典型的 PXE 啟動流程大致如下:

PXE啟動流程
PXE啟動流程
  1. PXE 啟動開始通過 DHCP 獲取 IP,所以需要有一臺 DHCP 伺服器
  2. 隨著 DHCP 響應返回的除了 IP 還有 PXE 相關的配置資訊,用來指示下一步去哪裡
  3. 根據上一步的資訊去 TFTP 伺服器上請求下載 Linux 引導系統
  4. TFTP 伺服器事先準備好包括 Linux 核心在內的檔案供下載
  5. 進一步下載作業系統檔案,包括自動應答檔案
  6. 完成作業系統安裝

在雲端計算技術出現之前,通過 PXE + Kickstart 來自動部署已經是運維必備的技術了。

OpenStack Ironic 在此基礎上,做了更多的優化,例如在安裝系統時,不需要再用到 kickstart 自動應答檔案,而是直接通過 iSCSI 掛載磁碟,把事先做好的磁碟映象克隆過去,免去了系統安裝的過程,更加高效省時。

下面終於可以來看看 Ironic 長什麼樣了。

Ironic 的架構

Ironic 系統就是一個典型的 OpenStack 服務架構,包含了一個 API 元件,和一個處理後臺任務的 Conductor 元件,Conductor 通過各種 Driver 完成實際的工作。

Ironic 基礎架構
Ironic 基礎架構

它和 OpenStack 的其它核心元件需要完成一系列的互動,獲取所需的資源:

Ironic 邏輯架構
Ironic 邏輯架構

從圖中我們可以看出,Ironic 和 OpenStack 的核心模組 Nova、Neutron、Glance、Cinder 都有互動。

熟悉 OpenStack 的人看著上面的圖應該很眼熟,和建立虛機幾乎完全一樣,就是把 VM 換成了 Bare Metal

最終裸金屬的部署流程如圖所示:

Ironic 部署流程
Ironic 部署流程

在 Dashboard 上操作

裸金屬伺服器在系統中有兩種存在方式。

受管理時被稱之為 節點(Node),有點類似於計算節點,此時它是屬於計算資源。使用者新建例項時,裸金屬節點和計算節點一起參與排程,區別在於計算節點是在上面建立虛擬機器,而裸金屬節點一旦被排程就完全佔用。

節點只有管理員可以操作。

裸金屬節點
裸金屬節點

使用者在使用裸金屬資源的時候,體驗和建立虛機沒有兩樣,部署成功後的裸金屬和虛擬機器一樣都叫 例項(Instance):

裸金屬例項展示
裸金屬例項展示

在上圖中,除了裸金屬使用的映象(Image)和例項型別(Flavor)都和虛機例項有所不同,但是整個的操作流程和使用體驗是完全一致的。

小結

今天浮光掠影的介紹了一下 Ironic ,希望可以讓大家有個初步的認識。

其中涉及到不少 Linux 運維相關的技術,在嘗試 Ironic 之前,有興趣的人可以參考網路教程動手實踐一番,相信會對理解裸金屬的部署過程有很大幫助。


感謝您的閱讀,請繼續關注 「雲端計算實驗室」, \m/ ʕ•͡ᴥ•ʔ \m/

本文使用 mdnice 排版

相關文章