使用 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 对象存储存储桶。
  2. 虚拟磁盘映像文件上载最终确定后,事件将触发 OCI 函数的执行。
  3. 该函数将提取虚拟磁盘对象元数据并调用 Apache Airflow API 以启动 DAG(定向 Acyclic Graph)执行。
  4. Apache Airflow DAG 将通过 14 个步骤处理将虚拟磁盘映像导入 OCI 块存储卷的过程。其中一些最重要的步骤是:
    • 创建新的 Worker 计算实例来处理虚拟磁盘映像导入。
    • 在新实例上设置所需的工具:qemu-img、oci-cli。
    • 将虚拟磁盘映像从存储桶下载到 Worker 实例。
    • 使用 qemu-img 确定虚拟磁盘映像的真实大小并预配新的 OCI 块存储卷(称为虚拟磁盘映像)。
    • 将 OCI 块存储卷连接到 Worker 计算实例。
    • 将虚拟磁盘映像内容写入 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 策略指定谁可以访问哪些资源以及如何访问。在组和区间级别授予访问权限,这意味着您可以编写策略,为组提供特定区间内或租户的特定类型的访问权限。

  • Block volume(块存储卷)

    通过块存储卷,您可以创建、附加、连接和移动存储卷,以及更改卷性能,从而满足您的存储、性能和应用要求。将卷连接到实例后,您可以像常规硬盘驱动器一样使用该卷。您还可以断开卷的连接并将其连接到另一个实例,而不会丢失数据。

  • 虚拟机

    Oracle Cloud Infrastructure (OCI) 计算 VM 在云中为从小型开发项目到大规模的全球应用(例如实时通信平台)等负载提供安全、弹性的计算能力。使用灵活的配置,用户可以通过定制处理器和内存值来优化 VM 资源,从而提高性价比。

推荐

使用以下建议作为起点。您的要求可能不同于此处所述的体系结构。
  • VCN

    创建 VCN 时,根据您计划附加到 VCN 中的子网的资源数确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。

    选择与您打算设置专用连接的任何其他网络(在 Oracle Cloud Infrastructure 、内部部署数据中心或其他云提供商中)不重叠的 CIDR 块。

    创建 VCN 后,您可以更改、添加和删除其 CIDR 块。

    设计子网时,请考虑流量和安全要求。将特定层或角色内的所有资源连接到同一子网,该子网可以充当安全边界。

  • 安全

    强烈建议将堆栈部署的用户作为管理员组的成员。如果用户使用 allowed_source_cidr 变量向 Internet 公开 Apache Airflow,强烈建议您填写特定的 IP 子网 CIDR 块。

注意事项

部署此引用体系结构时,请考虑以下几点。

  • 安全

    运行 Apache Airflow 和临时 Worker 实例的实例使用动态组来管理实例、块存储卷和读取它们所属区间中的对象。该函数有权对区间中的对象资源执行读取操作。

  • 可用性

    只有在创建新 VCN 时,才能从 Internet 访问 Apache Airflow 实例的端口 8080 上的 Apache Airflow API,该实例具有公共 IP 地址,并且 allowed_source_cidr 变量包括尝试连接的源 IP。

  • 成本

    创建一个临时计算实例来处理 Oracle Cloud Infrastructure Block Volumes 中的每个虚拟磁盘导入操作。成功完成工作流后,将终止实例。

  • 位置

    可以使用上载到 OCI 对象存储的虚拟磁盘映像文件上的 "ad_number": 1/2/3 元数据定制块存储卷放置。

部署

GitHub 中提供了用于配置和部署此参考体系结构资源的 Terraform 代码。

  1. 转至 GitHub
  2. 将资料档案库克隆或下载到本地计算机。
  3. 按照 README 文档中的说明进行操作。

浏览更多

要了解有关 Oracle Cloud Infrastructure、Apache Airflow 和 qemu-img 的更多信息,请参见以下资源。

确认

Author: Andrei Ilas