ノート:

Amazon Web ServicesからOracle Cloud InfrastructureへのUbuntu仮想マシンの移行

イントロダクション

Amazon Web Services(AWS)からOracle Cloud Infrastructure(OCI)への移行は、多くの組織にとってますます頻繁な努力です。OCIは、アプリケーションをより速く、より安全に、より少なく実行できるようにする次世代のクラウドであるためです。

仮想マシン(VM)の移行は、多くの場合、このような取り組みの中核部分であり、顧客は、AWSからOCIへの移行方法に関する適切なガイダンスを探します。また、多くの組織にとって、Linuxはインフラストラクチャの大部分を占めています。したがって、このチュートリアルでは、最も広く使用されているLinuxディストリビューション(Ubuntu)を実行している仮想マシンをAWSからOCIに移行することに重点を置いています。

このチュートリアルでは、OCIへの仮想マシン移行の要件、およびUbuntu VMをAWSからOCIに準備および移行する方法に関するガイダンスを提供し、OCIで準仮想化モードで起動できるようにします。OCIでは、インスタンスをエミュレート・モードで起動することもできますが、準仮想化デバイスを使用する仮想マシンは、エミュレート・モードでの実行と比較してはるかに高速なパフォーマンスを提供し、ディスクI/Oのパフォーマンスは少なくとも6倍高速です。

全体的なプロセスは、AWSでのVMの準備、Amazon Simple Storage Service (S3)へのエクスポート、OCI Object Storageへの転送、OCIでのカスタム・イメージの作成、およびそこからインスタンスの起動で構成されます。Amazon S3とOCI Object Storageの間のイメージ転送は、オープン・ソース・ツールrcloneを使用して実行されます。小さいサイズのイメージを試す場合は、手動で行うことができます。ただし、rcloneを使用することをお勧めします。これは、イメージの転送がより迅速かつ簡単なプロセスになるためです。

OCIへのカスタム・イメージ・インポート・プロセスの詳細は、カスタムLinuxイメージのインポートを参照してください。

目的

前提条件

前提作業

タスク1: データ転送インフラストラクチャの準備

このチュートリアルでは、次のデータ転送アーキテクチャを使用します。

タスク1.1: Amazon S3およびOCIオブジェクト・ストレージ・バケットの準備

このタスクでは、次の場所にバケットを作成します:

次のプロパティを使用して、Amazon S3でバケットを作成します:

Amazon S3バケット権限で、次の図に示すように、作業しているAWSリージョンに一致する権限付与を使用して、ACLをバケットにアタッチします。権限受領者リージョン固有の正規アカウントIDを参照してください: VMインポート/エクスポートを使用したVMとしてのインスタンスのエクスポート

S3 ACLアタッチメント

標準ストレージ層でOCI Object Storageにバケットを作成して、このタスクを終了します。これは、後でAmazon S3からVMイメージを転送するバケットです。

タスク1.2: Rcloneのインストールおよび構成

このタスクでは、OCIで実行されているVMにrcloneをインストールします。小規模のVMを試し、Amazon S3とOCI Object Storageの2つのリモートでrcloneを構成する場合は、ローカル・マシンにrcloneをインストールできます。

  1. OCIのOracle Linux VMにrcloneとSSHをインストールします。

    sudo -v ; curl https://rclone.org/install.sh | sudo bash
    
  2. rcloneでリモート構成を実行します。これを行うには、rclone構成セッションを開始します。コマンド行で次のコマンドを実行します。

    rclone config
    
  3. Amazon S3リモート構成の場合は、次の情報を入力します。

    • リモート名: リモート名を入力します。
    • リモート・タイプ: S3タイプを選択します。
    • プロバイダ: 「AWS」を選択します。
    • access_key_id: 使用することを決定したAWSユーザーに関連付けられたアクセス・キーIDを入力します。
    • secret_access_key: アクセス・キーIDに一致する秘密アクセス・キーを入力します。
    • リージョン: 作業中のAWSリージョンを選択します。
    • location_constraint: 作業中のAmazon Webリージョンに一致するロケーション制約を選択します。一部のリージョン(フランクフルトなど)では、これは空である可能性があります。
    • ACL: 「private」を選択して、より制限された定型ACLを作成していることを確認します。詳細については、Canned ACLを参照してください。
  4. OCI Object Storageへのrcloneアクセスの場合、このチュートリアルではOCIユーザーおよびAPI署名キーを使用します。かわりに、動的グループを使用することもできます。詳細は、インスタンスからのサービスのコールを参照してください。

    OCI Object Storageリモートを構成する前に、次のことを行います:

    • OCI Object Storageで認証し、イメージ・データ転送を実行するためのrclone用のOCI API署名キーを作成します。API署名キーを作成し、キーをVMに格納するディレクトリを書き留めます。これは、OCI構成ファイルで指定する必要があるためです。API署名キーの生成方法を参照してください。

    • OCI構成ファイルを作成します。この構成ファイルには、OCI API署名キーが必要です。詳細は、SDKおよびCLIの構成ファイルを参照してください。

    OCIプロバイダによるrcloneの認証オプションを理解するには、rcloneでのOCI Object Storageプロバイダのネイティブ・バックエンド・サポートの発表を参照してください。

  5. OCI構成ファイルは、通常、configという名前のファイルとしてディレクトリに格納されます。

    ~/.oci/
    
  6. OCI API署名キーおよびOCI構成ファイルを作成したら、rcloneでOCIリモートを構成できます。次のコマンドを実行して、構成セッションを開始します。

    rclone config
    
  7. OCI Object Storageリモート構成に関する次の情報を入力します。

    • リモート名:リモート名を入力します。
    • タイプ:「Oracle Object Storage」を選択します。
    • プロバイダ:動的グループを使用する場合は、user_principal_authを選択します(OCIユーザーおよびAPI署名キーを使用するため)。instance_principal_authを選択します。
    • Namespace:テナンシ・ネームスペースを入力します。
    • コンパートメント: OCIバケット・コンパートメントOCIDを入力します。
    • リージョン: OCIで作業しているリージョンを入力します。
    • エンドポイント:空白のままにするか、https://<namespace>.objectstorage.<region-code>.oci.customer-oci.com/n/<namespace>という形式でエンドポイントを入力します。
  8. 次のコマンドを使用して、rcloneリモート構成ファイルを確認します。

    cat ~/.config/rclone/rclone.conf
    

タスク2: ソースVMブート・ボリュームの準備

タスク2.1: AWS VMブート・ボリュームの必須スナップショットの実行

AWS VMブート・ボリュームのスナップショットを実行します。これは、ブート・ボリューム構成アクティビティを開始する前に必須です。

タスク2.2: シリアル・コンソールの有効化

シリアルコンソール接続を使用すると、ユーザーは VMのトラブルシューティングを行い、システム構成ファイルの編集やパスワードのリセットなどのアクティビティーを実行できます。通常、シリアルコンソール用に VMを準備するには、GRUBブートローダーファイルを構成する必要があります。このファイルは/etc/default/grubにあります。AWS Ubuntuプラットフォーム・イメージでは、/etc/default/grubファイルだけでなく、/etc/default/grub.d/50-cloudimg-settings.cfgファイルにも構成が必要です。この後者のファイルは、クラウド・イメージ・ビルド・プロセスによって変更され、etc/default/grub構成をオーバーライドします。

最も重要なGRUB構成パラメータは次のとおりです。

- GRUB_TIMEOUT_STYLE: Make sure it is commented if its value is "hidden"; alternatively, change it to "menu".
- GRUB_TIMEOUT: Make sure it is higher than 0 to allow boot mode selection without skipping directly to the default option. Specify this value in both files.
- GRUB_CMDLINE_LINUX: Make sure "console=tty1 console=ttyS0, 115200" is appended to it.
- GRUB_TERMINAL: Make sure its value is "serial console".
- GRUB_SERIAL_COMMAND: Make sure its value is "serial -- unit=0 --speed=115200".
  1. /etc/default/grub.d/50-cloudimg-settings.cfgを開きます。

    sudo vi /etc/default/grub.d/50-cloudimg-settings.cfg
    

    次の図に示すようなファイルになるようにファイルを編集します。

    50-cloudimg-settings.cfg編集

  2. /etc/default/grubを開きます。

    sudo vi /etc/default/grub
    

    次の図に示すようなファイルになるようにファイルを編集します。

    grub編集

  3. ファイルの編集後、次のコマンドを実行して、GRUBブート・ローダーが適切に更新されていることを確認します。

    sudo update-grub
    

タスク2.3: 準仮想化ドライバの確認

準仮想化モードで起動できるようにVMをOCIにインポートするには、準仮想化VirtIOドライバがイメージに存在する必要があります。このタスクでは、カーネルとinitramfs一時ファイルシステムの両方をチェックして、ドライバの存在を確認します。カーネル・バージョン3.4以降を実行しているLinuxベースのオペレーティング・システムでは、準仮想化ドライバがサポートされるため、多くの場合、存在していることを確認するだけで済みます。

必要なVirtIOドライバの最小セットには、pciおよびscsiが含まれます。これらのドライバは、カーネルまたはinitramfsに存在する必要があります。

  1. 次のコマンドを使用して、AWS VMのカーネルを確認します。

    sudo grep -i virtio /boot/config-$(uname -r)
    

    カーネルをチェック

    ノート: pci VirtIOドライバはカーネルに存在します。

  2. 次のコマンドを使用して、AWS VMのカーネルを確認します。

    sudo lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio
    

    initramfsを確認する

    ノート: scsi VirtIOドライバはinitramfsに存在します。

  3. VMのブート・ボリュームにドライバがない場合は、dracutを使用してinitramfsを再構築する必要があります。

    sudo dracut -v -f --add-drivers “virtio virtio_pci virtio_scsi” /boot/initramfs-$(uname -r).img $(uname -r)
    

タスク2.4: ネットワーク設定の構成

ネットワーク構成については、次を確認してください。

Linuxでネットワーク構成を実行するには、いくつかの方法があります。Canonicalは、このタスクを簡素化する方法として Netplanユーティリティーを開発しました。このチュートリアルではNetplanを使用しますが、ネットワーク構成ファイルが希望の場合は、変更することもできます。

  1. AWS Ubuntuプラットフォーム・イメージは、Netplan構成を/etc/netplan/50-cloud-init.yamlファイルに指定します。sudo権限でファイルを開き、編集できるようにします。

    sudo vi /etc/netplan/50-cloud-init.yaml
    

    次の図に示すように、構成ファイルが表示されます。

    netplan構成ファイルを確認します

  2. ファイルを編集し、macアドレスと、macアドレスで一致するインタフェース名を削除します。構成は、次の図のようになります。

    netplan構成ファイルの編集

  3. Netplan applyコマンドを実行して、ネットワーク構成を更新および終了します。

    sudo netplan apply
    

タスク3: 仮想マシン・イメージのAmazon S3へのエクスポート

このタスクでは、AWSコマンドライン・インタフェース(CLI)を使用する必要があります。このチュートリアルでは、AWS CLI構成タスクをスキップするため、AWS CloudShellを使用します。

  1. 仮想マシンを停止します。AWS CloudShellを開き、次のコマンドを実行してイメージをエクスポートします。

    aws ec2 create-instance-export-task --instance-id <instance-id> --target-environment vmware --export-to-s3-task DiskImageFormat=vmdk,ContainerFormat=ova,S3Bucket=<bucket name>
    
  2. 次の情報を入力します

    • ディスク・イメージ形式: OCIでサポートされている唯一のAWSエクスポート形式であるため、VMDKと入力します。
    • コンテナ形式: OVAと入力して、ディスク・イメージをVMに関するメタデータと結合します。または、このパラメータをエクスポートできます。
    • ターゲット環境: OCIでサポートされている唯一のターゲット環境であるため、vmwareと入力します。
  3. AWS CloudShellで次のコマンドを実行して、エクスポート・タスクの状態を監視できます。

    aws ec2 describe-export-tasks --export-task-ids <export task id>s
    

    最初にタスクを起動すると、「アクティブ」状態になります。完了すると、「完了」状態になります。

タスク4: OCIオブジェクト・ストレージへのイメージの転送

タスク1.2でrcloneが構成されたOCI仮想マシンにSSH接続します。Amazon S3バケットからOCI Object Storageバケットにエクスポートされたイメージのコピーを実行します。

rclone copy <aws-remote>:<bucket>/<imagefile> <oci-remote>:<bucket> -vv

タスク5: OCIでのカスタム・イメージの作成およびインスタンスの起動

  1. OCIコンソールで、コンピュート・サービス「カスタム・イメージ」に移動し、「イメージのインポート」を選択します。

  2. 次の情報を入力します

    • コンパートメント:カスタム・イメージを作成するコンパートメントを選択します。
    • 名前:カスタム・イメージの名前を入力します。
    • オペレーティング・システム:「Ubuntu」を選択します。
    • ソース: オブジェクト・ストレージ・バケットからインポートします。タスク1.1で構成したバケットを選択します。
    • オブジェクト名: Amazon S3から転送したイメージを選択します。
    • 起動モード:「準仮想化」モードを選択します。
  3. 「イメージのインポート」をクリックして、イメージのインポートを開始します。

  4. イメージが作成されると、そこからインスタンスを起動する準備が整います。カスタム・イメージの詳細ページで、「インスタンスの作成」を選択し、次の情報を入力します。

    • 名前:インスタンスの名前を入力します。
    • コンパートメント:インスタンスを起動するコンパートメントを選択します。
    • 可用性ドメイン
    • VCNおよびサブネット。このチュートリアルでは、パブリック・サブネットを使用してVPN接続をスキップできます。
    • SSHキー: 2つのオプションがあります: 新しいSSHキーを生成するか、AWSで使用したものと同じキー・セットを使用します。同じキー・セットを引き続き使用する場合は、AWSでソースVMに使用したものと同じ公開キーをアップロードします。AWS公開キーが.pemキー形式の場合、それを.pem.pubに変更してOCIインスタンスにアップロードします。これにより、同じ秘密キーを使用してVMにSSHで接続し続けることができます。
  5. 仮想マシンを起動します。プロビジョニングが終了したら、それに接続できます。接続するユーザーは opcではなく ubuntuであることに注意してください。

    ssh -i pathToKey/keyfile ubuntu@<publicIp>
    

承認

その他の学習リソース

docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。