AWS EC2からOCIコンピュートに移行してみる - その2（Oracle Cloud Migrations）

[前回の記事](https://qiita.com/tkonishi/items/691a57fe372f97b36653)の続きです。[その1](https://qiita.com/tkonishi/items/691a57fe372f97b36653)では事前準備、Oracle Cloud Migrationsから移行対象の検出、移行プロジェクトの作成までを実施したので、その2では実際にレプリケーションしてからインスタンスの移行を実施していきます！

（注：その1とその2の間に、ターゲット・アセットを変更したのでターゲットのインスタンス名が変わっていますが、設定している内容は同じです。）


# 1. 移行元インスタンスの確認

1. 作成したEC2インスタンスにssh接続します。
2. レプリケーションが正しく行われたことを確認するために念のためテストファイルを作成しておきます。
   ![image-20241024164052478.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/707646f7-95b1-4cf6-294a-acc2087c3809.png)


# 2. レプリケーションの実行

レプリケーションを手動実行していきます。移行アセットごとに実施することもできますが、今回はプロジェクト全体でレプリケーションを実行します。また、初回実行時はサービス内部でイメージのインポートなどの作業が行われるので少し時間がかかります。

1. 移行プロジェクトの「レプリケート」をクリックする
   ![image-20241025105636827.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/3b5db6ea-c67f-2050-13df-a9ae1f24c366.png)![image-20241025105631201.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/82c52a07-da13-5ee7-832c-0694ede65825.png)


2. 進行状況は作業リクエストから確認できます。
   ![image-20241025110032513.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/5211afb6-71cd-cd32-9a4d-eced0d8fa248.png)


3. 自動的にHydrationAgent_から始まる名前のインスタンスが起動してきてレプリケーションを実行しています。
   ![image-20241025110014403.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/d35bf31d-66c8-71d8-8623-b72a74bfd8c9.png)


4. HydrationインスタンスはOracle Linuxのインスタンスです。シェイプなどは自動的に決まるので指定することはできません。今回はVM.Standard.E4.Flexの1 OCPU、16GBメモリのインスタンスが一つ起動しました。また、ブート・ボリュームがブロック・ボリュームとしてアタッチされており、Hydrationインスタンスがここにデータを書き込んでいる様子が分かります。G_vol-からはじまるボリュームがレプリケーション用のボリュームのようです。
   ![image-20241025112101101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/415cb409-9a79-47b2-c60a-e1692c6c3cd6.png)

   ![image-20241025110205756.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/156665b0-ae08-723f-d6a0-d8d93b98f2f8.png)

5. VMwareからの移行の際には指定したバケット内にスナップショットが一時的に書き込まれていましたが、今回はレプリケーション中にオブジェクトストレージのバケットに何かが書き込まれている様子は見えませんでした。オブジェクト・ストレージは経由していないのかもしれません。

   - と思ったら、EC2アセットの場合はEBSボリュームから直接コピーされるのでオブジェクト・ストレージは利用しないと[ドキュメント](https://docs.oracle.com/ja-jp/iaas/Content/cloud-migration/cloud-migration-understand-vm-replication.htm#cloud-migration-hydration-agent)にもちゃんと書いてありました。（やはりドキュメントはきちんと読もう。）
     ![image-20241025111253130.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/89909d91-57e8-e8b7-bfbf-9a4050db263b.png)
     ![image-20241025111320702.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/b00b7a5e-0505-1453-b02a-d4bd3bdad77f.png)

6. レプリケーションが完了しました。
   ![image-20241025113454352.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/f5e11b2f-9a7f-4ed6-577d-4bcdb8f104fb.png)

7. 移行アセットのページからも、レプリケーションされたボリュームの情報や最終レプリケーションの開始と完了の時刻がわかります。
   ![image-20241025113555425.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/b6ca6cce-acf6-6cc7-32aa-e8cb6c6d1058.png)



レプリケーションは完了しました！




【補足】

- 初回レプリケーション実行時に、以下のようなエラーでレプリケーションに失敗しました。原因は、カスタムイメージのサービス制限の上限にあたっており、OCMが必要とするOCM用のカスタムイメージがインポートできずエラーになっていました。不要なイメージを削除してから再実行すれば問題なく実行できました。
- 実は以前VMware移行を試した際にも同じ原因で失敗したのですが、事前にカスタムイメージのサービス制限と使用量を確認しておくことを忘れていました。カスタムイメージのサービス制限がギリギリのテナンシでは注意しましょう。![image-20241024190811502.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/1b0b6545-c654-be96-9a85-708021a3b74a.png)

- OCMによって以下のようなカスタムイメージがインポートされています。これは、ブートボリューム作成用のインスタンス（Vanillaインスタンスと呼ばれる。Vanillaインスタンスはブートボリュームを生成するためだけに起動され、ボリュームを生成できたらすぐに終了される。）を起動するためだけのイメージです。![image-20241025105824353.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/89406ffe-b582-813b-1d2a-34737d841aa0.png)



# 3. 移行プランの実行

続いて移行プランを実行していきます。

1. 移行プロジェクトの中の移行プランを表示します。このままRSMスタックを生成することもできますが、デフォルトだとインスタンスにパブリックIPが付与されないので、事前にインスタンスのネットワーク設定を変更していきます。そのためにターゲット・アセットの構成を変更します。
   ![image-20241025113853466.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/b9eb5018-443a-5e38-f8bf-554a6b2efc93.png)
2. 移行プランのページ下部のリソースの「ターゲット・アセット」をクリックし、編集したい対象のターゲット・アセットにチェックを入れます。
   ![image-20241025114036782.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/da3e1bd2-e782-2c30-dcfe-070efee0f563.png)
3. 「アクション」→「構成」をクリックします。
   ![image-20241025114119246.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/90d8f8b4-7cdc-4f70-2701-14fb248a9195.png)
4. ターゲット・アセットの一括構成で、上書きするプロパティとして「サブネット」を選択します。ほかにも構成を変更したい場合は同様の手順で実施可能です。
   ![image-20241025114344024.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/ace433d1-5ea8-cda2-bf26-d96a6c8aa1aa.png)
5. 正しいVCNとサブネットを選択し、「パブリックIPv4アドレスの割当て」にチェックを入れ、左下の「構成」ボタンをクリックします。
   ![image-20241025114522603.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/3acebe11-3a76-0967-c971-e35053cce5f5.png)
6. 移行プランのページから「RMSスタックの作成」をクリックします。スタックが出来上がるまでしばらく待ちます。
   ![image-20241025121631211.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/f96e033d-c9fa-66f0-add4-ead0431f83cd.png)
7. スタックの生成が完了したので、「RMSスタックのデプロイ」をクリックします。
   ![image-20241025122845574.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/2439d5e0-2f2c-e438-70bd-2bad6c9c8f44.png)
   ![image-20241025122900038.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/a3a2ecc8-05c7-8df3-afe1-f3e6cba15f0a.png)
8. スタックのデプロイ状況はRMS（リソースマネージャ）のページから確認できます。
   ![image-20241025123017787.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/6d4a0c59-6fc4-569c-e8a5-ccd674b0cb67.png)
9. ジョブの詳細を表示するとログも確認できます。問題なく完了したようです！
   ![image-20241025123216306.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/a1bf4cc7-a7cc-2b5e-7f56-e51889f5701f.png)
10. コンピュートのページを確認すると、無事インスタンスができていました。
    ![image-20241025123511559.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/6a5eba07-cf39-b8f5-1382-27530a709d7d.png)



# 4. 移行されたインスタンスへの接続確認

1. コンピュートのページから移行されたインスタンスをクリックしてインスタンスの詳細を表示します。構成した通りパブリックIPアドレスが付与されているので、パブリックIPアドレスをコピーします。
   ![image-20241025123722362.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/2c0e2c50-6e61-a82e-e785-5b3d4ef89803.png)

2. ちなみに、このインスタンスのブート・ボリュームはI_vol-から始まる名前のボリュームで、レプリケーションで利用されていたG_volからクローンされたボリュームであることが分かります。
   ![image-20241025124747509.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/731f300d-532e-a26e-f219-66d01aa00120.png)

3. インスタンスにsshで接続していきます。ユーザー名は移行前と同じec2-userです。

4. 無事に接続できました！あらかじめ作成していたファイルも確認できたのでレプリケーションされていることが分かります。
   ![image-20241025124124327.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/41197d60-97f2-d44c-001e-5e63d8f494dd.png)


# 5. 移行の完了

インスタンスが問題なく移行できていることが確認できたら、忘れがちですが移行を完了します。

1. 移行プロジェクトのページを表示して、「移行完了とマーク」をクリックします。
   ![image-20241025124553382.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/2aa6aea0-123a-6141-1938-3791d267028f.png)



注：現時点ではレプリケーション実行時に取得されたAWS側のスナップショットは自動削除されないため、クリーンアップしたい場合は手動で削除する必要があります。


<br>


以上で、EC2からOCIコンピュートへの移行は完了です！

簡単な操作でEC2のインスタンスをOCIコンピュート・インスタンスに移行できることが確認できました。