使用 Apache Airflow 将虚拟磁盘映像导入 Oracle Cloud Infrastructure Block Volumes
随着组织继续迁移到云,他们经常发现自己面临着无缝传输和管理现有块存储卷的挑战。无论是迁移内部部署负载、实施灾难恢复策略还是优化云基础设施,轻松导入虚拟磁盘都成为一项关键需求。
注意:
由于此解决方案使用 Apache Airflow 进行编排,因此以往的经验将允许用户监视虚拟磁盘导入工作流,对任何中断的转换流进行故障排除并重试。体系结构
下节介绍了典型虚拟磁盘映像导入工作流的体系结构。
- 用户将新的虚拟磁盘映像上载到 OCI 对象存储存储桶。
- 虚拟磁盘映像文件上载最终确定后,事件将触发 OCI 函数的执行。
- 该函数将提取虚拟磁盘对象元数据并调用 Apache Airflow API 以启动 DAG(定向 Acyclic Graph)执行。
- Apache Airflow DAG 将通过 14 个步骤处理将虚拟磁盘映像导入 OCI 块存储卷的过程。其中一些最重要的步骤是:
- 创建新的 Worker 计算实例来处理虚拟磁盘映像导入。
- 在新实例上设置所需的工具:qemu-img、oci-cli。
- 将虚拟磁盘映像从存储桶下载到 Worker 实例。
- 使用 qemu-img 确定虚拟磁盘映像的真实大小并预配新的 OCI 块存储卷(称为虚拟磁盘映像)。
- 将 OCI 块存储卷连接到 Worker 计算实例。
- 将虚拟磁盘映像内容写入 OCI 块存储卷。
- 在 OCI 块存储卷上运行
fsck
。 - 分离 OCI 块存储卷。
- 终止员工实例。
- (可选)更新 OCI 块存储卷上的备份策略。
- 用户可以通过连接到 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
元数据定制块存储卷放置。