使用 Apache Airflow 將虛擬磁碟映像檔匯入 Oracle Cloud Infrastructure Block Volumes

隨著組織持續移轉至雲端,通常會發現自己面臨順暢移轉及管理現有區塊磁碟區的挑戰。無論是移轉內部部署工作負載、導入災害復原策略,還是最佳化雲端基礎架構,匯入虛擬磁碟的能力都變得非常重要。

這是 Oracle Cloud Infrastructure Functions ( OCI Functions)、 OCI Object Storage 、Apache Airflow、qemu-img 以及事件導向架構的協同效應,可讓使用者自動將虛擬磁碟映像檔匯入 Oracle Cloud Infrastructure Block Volumes

附註:

由於此解決方案使用 Apache Airflow 進行協調,因此先前的體驗可讓使用者監控虛擬磁碟匯入工作流程、疑難排解及重試任何中斷的轉換流程。

架構

下節說明一般虛擬磁碟映像檔匯入工作流程的架構。

  1. 使用者上傳新的虛擬磁碟映像檔至 OCI Object Storage 儲存桶。
  2. 虛擬磁碟映像檔上傳完成後,事件會觸發執行 OCI 函數。
  3. 此函數會擷取虛擬磁碟物件描述資料,並呼叫 Apache Airflow API 以啟動 DAG (Directed Acyclic Graph) 執行。
  4. Apache Airflow DAG 將透過 14 個步驟將虛擬磁碟映像匯入 OCI Block Volume。最重要的步驟包括:
    • 建立將處理虛擬磁碟映像檔匯入的新工作運算執行處理。
    • 在新執行處理上設定必要的工具:qemu-img、oci-cli。
    • 將虛擬磁碟映像檔從儲存桶下載至工作執行處理。
    • 使用 qemu-img 決定虛擬磁碟映像檔的真實大小,並佈建新的 OCI 區塊磁碟區 (稱為虛擬磁碟映像檔)。
    • 將 OCI 區塊磁碟區連附至工作運算執行處理。
    • 將虛擬磁碟映像檔內容寫入 OCI 區塊磁碟區。
    • 在 OCI 區塊磁碟區上執行 fsck
    • 取消連附 OCI 區塊磁碟區。
    • 終止工作執行處理。
    • (選擇性) 更新 OCI 區塊磁碟區的備份原則。
  5. 使用者可以連線至 Apache Airflow 來監控 DAG 執行。

下圖說明此參照架構。



virtual-disk-import-arch-oracle.zip

此架構具有下列元件:

  • 地區

    Oracle Cloud Infrastructure 區域是包含一或多個資料中心 (稱為可用性網域) 的本地化地理區域。區域與其他區域無關,且遠距離可加以區分 (跨國家,甚至是大陸)。

  • 可用性網域

    可用性網域是區域內獨立的資料中心。每個可用性網域中的實體資源會與其他可用性網域中的資源隔離,提供容錯能力。可用性網域不共用基礎架構 (例如電源或冷卻系統) 或內部可用性網域網路。因此,一個可用性網域發生故障並不會影響區域中的其他可用性網域。

  • 虛擬雲端網路 (VCN) 和子網路

    VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。就像傳統的資料中心網路一樣,VCN 也可讓您完整控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,您可以在建立 VCN 之後加以變更。您可以將 VCN 分割成子網路,子網路可以限定為區域或可用性網域。每個子網路都是由不與 VCN 中其他子網路重疊的連續位址範圍所組成。您可以在建立子網路後變更其大小。子網路可以是公用或專用。

  • 物件儲存

    物件儲存可讓您快速存取各種內容類型的大量結構化和非結構化資料,包括資料庫備份、分析資料,以及豐富的內容 (例如影像和影片)。您可以安全地儲存資料,然後直接從網際網路或雲端平台內擷取資料。您可以無縫擴充儲存體,而不會發生效能或服務可靠性降低的情況。針對快速、立即且經常存取的「熱」儲存體,使用標準儲存體。將封存儲存用於保留很長一段時間、極少或極少存取的「冷」儲存。

  • 事件

    Oracle Cloud Infrastructure 服務會發出事件,這些事件是描述資源變更的結構化訊息。系統會發出事件來建立、讀取、更新或刪除 (CRUD) 作業、資源週期狀態變更,以及影響雲端資源的系統事件。

  • 功能

    Oracle Cloud Infrastructure Functions 是一個完全託管的多租戶,可高度擴展,可隨選函數即服務 (FaaS) 平台。它由 Fn Project 開放原始碼引擎提供技術支援。函數可讓您部署程式碼,並直接呼叫或觸發程式碼以回應事件。Oracle Functions 使用 Oracle Cloud Infrastructure Registry 中代管的 Docker 容器。

  • DevOps

    DevOps 服務是適用於開發人員的端對端、持續整合及持續交付 (CI/CD) 平台,可協助建置使用者自建物件及部署至 OCI 運算服務 (Functions、Oracle Container Engine (OKE) 或運算執行處理)。

  • 原則

    Oracle Cloud Infrastructure Identity and Access Management 原則指定誰可以存取哪些資源以及存取方式。存取權是在群組和區間層次授予,這表示您可以編寫原則,讓群組在特定區間或租用戶中擁有特定類型的存取權。

  • 區塊磁碟區

    有了區塊儲存磁碟區,您就可以建立、附加、連線與移動儲存磁碟區,以及變更磁碟區效能,以滿足儲存、效能和應用程式需求。將磁碟區連附至執行處理之後,就可以像一般硬碟一樣使用該磁碟區。您也可以中斷磁碟區連線並將其連附至另一個執行處理,而不會遺失資料。

  • 虛擬機器

    Oracle Cloud Infrastructure (OCI) 運算 VM 可在雲端提供安全且彈性的運算能力,適用於從小型開發專案到大規模全球應用系統 (例如即時通訊平台) 的工作負載。彈性資源配置可讓使用者透過自訂處理器和記憶體值將 VM 資源最佳化,以提升性價比。

建議

使用下列建議作為起點。您的需求可能與此處描述的架構不同。
  • VCN

    建立 VCN 時,請根據計畫要連附至 VCN 中子網路的資源數目,決定所需的 CIDR 區塊數目和每個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。

    選取未與任何其他網路 (在 Oracle Cloud Infrastructure 中、您的內部部署資料中心或其他雲端提供者) 重疊的 CIDR 區塊,以設定專用連線。

    建立 VCN 之後,您可以變更、新增及移除其 CIDR 區塊。

    設計子網路時,請考慮流量和安全性需求。將特定層或角色內的所有資源連附至相同的子網路,以作為安全界限。

  • 安全

    強烈建議將堆疊部署為管理員群組成員的使用者使用。如果使用者使用 allowed_source_cidr 變數將 Apache Airflow 暴露在網際網路上,強烈建議您填入特定的 IP 子網路 CIDR 區塊。

注意事項

建置此參照架構時,請考量下列各點。

  • 安全

    執行 Apache Airflow 和暫時工作執行處理的執行處理使用動態群組授權,管理其所屬區間中的執行處理、區塊磁碟區以及讀取物件。此函數被授權對區間中的物件資源執行讀取作業。

  • 使用狀態

    只有在建立新的 VCN 時,才能從網際網路連線 Apache Airflow 執行處理連接埠 8080 上的 Apache Airflow API、執行處理具有公用 IP 位址,而 allowed_source_cidr 變數包含嘗試連線的來源 IP。

  • 成本

    建立暫時運算執行處理,以處理將每個虛擬磁碟匯入作業傳送至 Oracle Cloud Infrastructure Block Volumes 。成功完成工作流程時,執行處理會被終止。

  • 位置

    您可以使用上傳至 OCI Object Storage 的虛擬磁碟映像檔上的 "ad_number": 1/2/3 描述資料自訂區塊磁碟區位置。

部署

GitHub 中提供用來設定和部署此參考架構資源的 Terraform 程式碼。

  1. 前往 GitHub
  2. 複製或下載儲存區域至您的本機電腦。
  3. 遵循 README 文件中的指示。

探索更多

若要深入瞭解 Oracle Cloud Infrastructure、Apache Airflow 及 qemu-img,請參閱下列資源。

認可

Author: Andrei Ilas