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 Block Volume (仮想ディスク・イメージという名前)をプロビジョニングします。
    • OCI Block Volumeをワーカー・コンピュート・インスタンスにアタッチします。
    • 仮想ディスク・イメージの内容をOCI Block Volumeに書き込みます。
    • OCI Block Volumeでfsckを実行します。
    • OCI Block Volumeをデタッチします。
    • 雇用データを終了します。
    • (オプション)OCIブロック・ボリュームのバックアップ・ポリシーを更新します。
  5. ユーザーは、Apache Airflowに接続することでDAGの実行をモニターできます。

次の図は、このリファレンス・アーキテクチャを示しています。



virtual-disk-import-arch-oracle.zip

このアーキテクチャには次のコンポーネントがあります。

  • リージョン

    Oracle Cloud Infrastructureリージョンとは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。リージョンは他のリージョンから独立しており、長距離では(国や大陸をまたがって)それらを分離できます。

  • 可用性ドメイン

    可用性ドメインは、リージョン内の独立したスタンドアロン・データ・センターです。各可用性ドメイン内の物理リソースは、他の可用性ドメイン内のリソースから分離されているため、フォルト・トレランスが提供されます。可用性ドメインどうしは、電力や冷却、内部可用性ドメイン・ネットワークなどのインフラを共有しません。そのため、1つの可用性ドメインでの障害がリージョン内の他の可用性ドメインに影響を及ぼすことはほとんどありません。

  • 仮想クラウド・ネットワーク(VCN)およびサブネット

    VCNは、Oracle Cloud Infrastructureリージョンで設定する、ソフトウェアで定義されたカスタマイズ可能なネットワークです。VCNは、従来のデータ・センター・ネットワークと同様に、ネットワーク環境の完全な制御を可能にします。VCNには重複しない複数のCIDRブロックを含めることができ、VCNの作成後にそれらを変更できます。VCNをサブネットにセグメント化して、そのスコープをリージョンまたは可用性ドメインに設定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックにもプライベートにもできます。

  • オブジェクト・ストレージ

    オブジェクト・ストレージでは、データベースのバックアップ、分析データ、イメージやビデオなどのリッチ・コンテンツなど、あらゆるコンテンツ・タイプの構造化データおよび非構造化データにすばやくアクセスできます。インターネットから直接またはクラウド・プラットフォーム内から、安全かつセキュアにデータを格納し、取得できます。パフォーマンスやサービスの信頼性を低下させることなく、シームレスにストレージを拡張できます。迅速、即時、頻繁にアクセスする必要がある「ホット」ストレージに標準ストレージを使用します。長期間保持し、ほとんどまたはめったにアクセスしないコールド・ストレージには、アーカイブ・ストレージを使用します。

  • イベント

    Oracle Cloud Infrastructureサービスでは、リソースの変更を記述する構造化メッセージであるイベントが生成されます。イベントは、作成、読取り、更新または削除(CRUD)操作、リソース・ライフサイクル状態の変更およびクラウド・リソースに影響するシステム・イベントに対して発行されます。

  • 関数

    Oracle Cloud Infrastructure Functionsは、完全に管理された、マルチテナントでスケーラビリティが高いオンデマンドのFunctions-as-a-Service (FaaS)プラットフォームです。これは、Fn Projectのオープン・ソース・エンジンによって機能します。ファンクションを使用すると、コードをデプロイし、直接コールするか、イベントに応答してトリガーできます。Oracle Functionsは、Oracle Cloud Infrastructure RegistryでホストされているDockerコンテナを使用します。

  • DevOps

    DevOpsサービスは、アーティファクトの構築およびOCIコンピュート・サービス(ファンクション、Oracle Container Engine (OKE)またはコンピュート・インスタンス)へのデプロイメントのプロセスを容易にする開発者向けのエンドツーエンドの継続的インテグレーションおよび継続的デリバリ(CI/CD)プラットフォームです。

  • ポリシー

    Oracle Cloud Infrastructure Identity and Access Managementポリシーでは、誰がどのリソースにどのようにアクセスできるかを指定します。アクセス権はグループ・レベルおよびコンパートメント・レベルで付与されます。つまり、特定のコンパートメント内またはテナンシへの特定のタイプのアクセス権をグループに付与するポリシーを作成できます。

  • ブロック・ボリューム

    ブロック・ストレージ・ボリュームでは、ストレージ・ボリュームを作成、アタッチ、接続および移動し、ボリューム・パフォーマンスを変更して、ストレージ、パフォーマンスおよびアプリケーションの要件を満たすことができます。ボリュームをインスタンスにアタッチおよび接続した後は、そのボリュームを通常のハード・ドライブのように使用できます。また、データを失うことなく、ボリュームを切断して別のインスタンスに接続することもできます。

  • 仮想マシン

    Oracle Cloud Infrastructure(OCI)Compute VMsは、小規模な開発プロジェクトからリアルタイム通信プラットフォームなどの大規模なグローバル・アプリケーションまで、さまざまなワークロードに対して、クラウド内のセキュアで柔軟なコンピュート容量を提供します。柔軟なシェイプにより、ユーザーはカスタマイズされたプロセッサとメモリ値でVMリソースを最適化し、価格パフォーマンスを向上させることができます。

レコメンデーション

次の推奨事項を開始点として使用します。お客様の要件は、ここで説明するアーキテクチャと異なる場合があります。
  • VCN

    VCNを作成する場合、必要なCIDRブロックの数を決定し、VCN内のサブネットにアタッチする予定のリソースの数に基づいて各ブロックのサイズを決定します。標準のプライベートIPアドレス空間内にあるCIDRブロックを使用します。

    プライベート接続を設定する他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは別のクラウド・プロバイダ)と重複しないCIDRブロックを選択します。

    VCNを作成した後、そのCIDRブロックを変更、追加および削除できます。

    サブネットを設計するときには、トラフィック・フローおよびセキュリティ要件を考慮してください。特定の層またはロール内のすべてのリソースを、セキュリティ境界として機能する同じサブネットにアタッチします。

  • セキュリティ

    スタックをデプロイするユーザーは、管理者グループのメンバーになることを強くお薦めします。ユーザーがallowed_source_cidr変数を使用してApache Airflowをインターネットに公開する場合は、特定のIPサブネットCIDRブロックを入力することを強くお薦めします。

考慮事項

このリファレンス・アーキテクチャをデプロイする場合は、次の点を考慮してください。

  • セキュリティ

    Apache Airflowおよび一時ワーカー・インスタンスを実行しているインスタンスは、動的グループを使用して、インスタンスが属するコンパートメント内のインスタンス、ブロック・ボリュームおよび読取りオブジェクトを管理する権限を持ちます。このファンクションは、コンパートメント内のオブジェクト・リソースに対して読取り操作を実行する権限があります。

  • 可用性

    Apache Airflowインスタンスのポート8080上のApache Airflow APIは、新しいVCNが作成され、インスタンスにパブリックIPアドレスがあり、allowed_source_cidr変数に接続の試行元のソースIPが含まれている場合にのみ、インターネットからアクセス可能です。

  • コスト

    一時コンピュート・インスタンスは、Oracle Cloud Infrastructure Block Volumesへの各仮想ディスク・インポート操作を処理するために作成されます。ワークフローが正常に完了すると、インスタンスは終了します。

  • 配置

    ブロック・ボリュームの配置は、OCI Object Storageにアップロードされた仮想ディスク・イメージ・ファイルの"ad_number": 1/2/3メタデータを使用してカスタマイズできます。

デプロイ

このリファレンス・アーキテクチャのリソースを構成およびデプロイするためのTerraformコードは、GitHubにあります。

  1. GitHubに移動します。
  2. リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
  3. READMEドキュメントの指示に従います。

詳細の参照

Oracle Cloud Infrastructure、Apache Airflowおよびqemu-imgの詳細は、次のリソースを参照してください。

確認

Author: Andrei Ilas