ノート:

Red Hat Enterprise Linux仮想マシンのAmazon Web ServicesからOracle Cloud Infrastructureへの移行

イントロダクション

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

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

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

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

目的

前提条件

前提作業

タスク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バケット・コンパートメントのOracle Cloud Identifier (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にあります。

最も重要な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を開きます。

    sudo vi /etc/default/grub
    

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

    grub編集

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

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

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

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

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

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

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

    カーネルをチェック

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

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

    sudo lsinitrd /boot/initramfs-$(uname -r).img | 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でネットワーク構成を実行するには、いくつかの方法があります。具体的には、RHELでは、/etc/sysconfig/network-scripts/ifcfg-eth0のネットワーク構成ファイルを編集するか、NetworkManagerを使用して、イーサネット接続構成を実行できます。このチュートリアルでは、後者を使用して必要なネットワーク構成を実行します。詳細は、Configuring an Ethernet connectionを参照してください。

  1. NetworkManagerコマンドライン・ツール(nmcli)を実行して、VMのネットワーク構成のサマリーを確認します。

    ネットワーク構成サマリー

  2. VMで使用可能な接続をリストするには、次のコマンドを実行します。

    nmcli connection show
    

    接続のリストが表示されます。このチュートリアルで使用するVMには、次の接続があります。

    接続のチェック

  3. Dynamic Host Configuration Protocol (DHCP)を使用して、eth0に関連付けられたイーサネット接続を確認します。

    nmcli connection show <connection UUID>
    

    ipv4.methodパラメータが見つかるまでスクロールします。値がautoになっているはずです。

    DHCPの確認

  4. インタフェースeth0に関連付けられた接続を編集します。次のコマンドを使用して、インタフェース構成からMACアドレスを削除します。

    sudo nmcli connection modify <connection UUID> 802-3-ethernet.mac-address ''
    
  5. 次のコマンドを使用して、これらの変更を適用します。

    sudo nmcli con up <connection UUID>
    
  6. さらに、/etc/udev/rulesディレクトリをチェックして、MACアドレスのハードコードされたルールを含むudevルール・ファイルがあるかどうかを確認し、それらを削除します。このチュートリアルで使用するAWSイメージには、このようなファイル70-persistent-net.rulesがあります。このファイルを削除するには、次のコマンドを実行します。

    sudo rm /etc/udev/rules.d/70-persistent-net.rules
    

ネットワーク構成が完了しました。確認するには、ファイル/etc/sysconfig/network-scripts/ifcfg-eth0を確認します。

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

このタスクでは、AWS CLIを使用する必要があります。このチュートリアルでは、AWS CLI構成タスクをスキップするため、AWS CloudShellを使用します。

  1. VMを停止します。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 VMにSSH接続します。エクスポートされたイメージのコピーをAWS S3バケットからOCI Object Storageバケットにコピーします。

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

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

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

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

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

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

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

    ssh -i pathToKey/keyfile ec2-user@<publicIp>
    

承認

その他の学習リソース

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

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