vCenter Converter で EC2 インスタンスを VMware Cloud on AWS に移行する

# vCetner Converter とは
vCenter Converter は、VMware が提供する、ワークロードを VMware 仮想化基盤に移行するためのツールです。

vCenter Converter は主に以下の機能を提供します：
- P2V（Physical-to-Virtual）変換：物理マシンを仮想マシンに変換します。この変換により、ハードウェアの依存性を排除し、物理サーバーの管理コストを削減できます。
- V2V（Virtual-to-Virtual）変換：異なるホスト上の仮想マシンを vSphere 環境に移行します。

<img src="https://www.vmware.com/content/dam/digitalmarketing/vmware/en/images/products/converter/vmware-converter.jpg" width="600" />

*図は [vCenter Converter のページ](https://www.vmware.com/jp/products/converter.html)からの抜粋*


2023 年 4 月に vCenter Converter 6.4 が[発表](https://blogs.vmware.com/code/2023/04/19/vcenter-converter-6-4-beta-is-available/)され、EC2 からの移行がサポートされるようになりました。

今回は、EC2 インスタンスを VMware Cloud on AWS に移行してみたいと思います！

# 今回の構成

以下のような構成で移行を試してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/649fae33-e8ea-03d3-591f-f5567c1f88c9.png)

- vCenter Converter は VMware Cloud on AWS 上の Windows VM (Windows Server 2019) にインストール
- 移行対象の EC2 インスタンス（Windows Server 2019) は Connected VPC 上にデプロイ

※ Connected VPC との接続（ENI 経由での接続）についての詳細については、以下のブログを参照下さい。

https://qiita.com/mtoyoda/items/99c9b5af4392fdc3c170

# vCenter Converter のインストール

vCenter Converter は以下の URL からダウンロードできます。

https://www.vmware.com/go/download-vcenter-converter

vCenter Converter Standalone は Windows OS 上にのみインストールが可能です。
本ブログ執筆時点では以下の OS へのインストールがサポートされています。
- Windows Server 2012 (64-bit)
- Windows Server 2012 R2 (64-bit)
- Windows 10 (32-bit and 64-bit)
- Windows Server 2016 (64-bit)
- Windows Server 2019 (64-bit)
- Windows 11 (64-bit)
- Windows Server 2022 (64-bit)

最新の情報は [VMware Docs](https://docs.vmware.com/en/vCenter-Converter-Standalone/6.4/vcenter-converter/GUID-088E735A-CB88-4790-9BF2-EA0B9E34867F.html) を参照下さい。

今回は VMware Cloud on AWS の SDDC 上に Windows Server 2019 の仮想マシンをデプロイし、そこにインストールしました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/6d4ddf12-e62e-5eb9-2c27-8593ff185f9f.png" width="600" />

# vCenter Converter の構成

次に vCenter Converter が VMware Cloud on AWS の ESX ホストと IP アドレスで通信できるようにするために設定を変更します。

1. C:\ProgramData\VMware\VMware vCenter Converter Standalone\converter-worker.xml を開きます。

    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/7d028e91-f819-6a93-bbf7-dc88e2f9807d.png" width="500" />

1. UseHostIPForWebSocketTicket を false から true に変更します。
    ```converter-worker.xml 
    （一部抜粋）
          <!-- Time in seconds Converter waits for target VM to attach Linux P2V helper iso image -->
          <helperBootDelay>30</helperBootDelay>
    
          <!--
             Use the IP address of ESX instead of the FQDN for the websocket ticket if the vCenter's
             FQDN is not reachable from the Converter server.
          -->
          <UseHostIPForWebSocketTicket>true</UseHostIPForWebSocketTicket>
          <!-- ↑ ここを false から true に変更する -->
    
          <!-- Time in seconds Converter waits for target VM to boot in Linux P2V -->
          <linuxP2VBootTimeout>1200</linuxP2VBootTimeout>
    ```


1. VMware vCenter Converter Standalone Worker のサービスを再起動します。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/286fe183-486f-aea6-aeff-b7f55ce178dc.png" width="450" />

# ゲートウェイ ファイアウォールのルール追加
vCenter Converter から vCenter, ESXi, EC2 インスタンスにアクセスできるよう、Management Gateway (MGW), Compute Gateway (CGW) 双方のファイアウォールのルールを追加します。

1. グループの作成
    以下のグループを作成します。

    | 追加先           | 名前               | メンバー                                                          |
    | ------------- | ---------------- | ------------------------------------------------------------- |
    | 管理グループ        | Converter Server | 1. Converter Server のプライベート IP アドレス <br> 2. 送信元 NAT のパブリック IP <br> ※ 送信元 NAT のパブリック IP は [ネットワークとセキュリティ] タブの [概要] から確認できます。 |
    | 管理グループ        | EC2-Subnets      | Connnected VPC のサブネット                                         |
    | コンピューティンググループ | Converter Server | Converter Server の VM                                         |

    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/c3ede772-dc88-7e29-5fd2-0aab50198bdf.png" width="500" />
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/d828bf1e-2f26-9520-173b-8a5ecb732794.png" width="500" />


1. 管理ゲートウェイのファイアウォールルールの作成
    以下のルールを作成します。

    | 送信元                               | 宛先               | サービス                                     | アクション |
    | --------------------------------- | ---------------- | ---------------------------------------- | ----- |
    | 1. Converter Server <br> 2. EC2-Subnets | vCenter          | HTTPS                                    | Allow |
    | Converter Server                  | ESXi             | HTTPS <br> Provisioning & Remote Console | Allow |
    | コンピューティンググループ                     | Converter Server | Converter Server の VM                    |       |

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/4de4eea5-5996-5ced-68ab-428f45970332.png)

1. コンピュート ゲートウェイのファイアウォールルールの作成
    以下のルールを作成します。

    | 送信元              | 宛先  | サービス | アクション |
    | ---------------- | --- | ---- | ----- |
    | Converter Server | Any | Any  | Allow |


    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/09a27b60-a8d4-094c-53e7-d745b33c0063.png)

# 移行対象の EC2 インスタンスの準備

実際に vCenter Converter で移行する為に移行対象の EC2 インスタンスを準備します。
vCenter Converter 6.4 でサポートされる OS は [VMware Docs](https://docs.vmware.com/en/vCenter-Converter-Standalone/6.4/vcenter-converter/GUID-088E735A-CB88-4790-9BF2-EA0B9E34867F.html) で確認できます。

本ブログ執筆時点でサポートされていた OS は以下の通りでした。Linux については少し古いバージョンのみサポートとなってます。

- Windows Server 2012 (64-bit)
- Windows Server 2012 R2 (64-bit)
- Windows 10 (32-bit and 64-bit)
- Windows Server 2016 (64-bit)
- Windows Server 2019 (64-bit)
- Windows 11 (64-bit)
- Windows Server 2022 (64-bit)
- CentOS 6.x (32-bit and 64-bit)
- CentOS 7.x (64-bit)
- Red Hat Enterprise Linux 6.x (32-bit and 64-bit)
- Red Hat Enterprise Linux 7.x (64-bit)
- Ubuntu 14.04 LTS (32-bit and 64-bit)
- Ubuntu 16.04 LTS (32-bit and 64-bit)

今回は Windows Server 2019 のインスタンスを移行してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/86306c80-ac75-10ea-a37e-36d0922b0423.png)

Windows を移行する場合は、vCenter Converter agent のインストールが必要です。移行対象の EC2 インスタンスにて agent のインストールを行います。
<img src="https://images.vmc.techzone.vmware.com/sites/default/files/imported-images/node_3267_0512-070315/12644-0512-070313/12644-0512-070313-3.png" width="400" />
<img src="https://images.vmc.techzone.vmware.com/sites/default/files/imported-images/node_3267_0512-070315/12644-0512-070313/12644-0512-070313-8.png" width="400" />


# セキュリティグループの設定

vCenter Converter 用に以下のセキュリティグループを作成し、EC2 インスタンスにアタッチしました。

| タイプ      | ポート範囲 | ソース                                                                    | 用途          |
| -------- | ----- | ---------------------------------------------------------------------- | ----------- |
| SSH      | 22    | 1. vCenter Converter が導入されている Windows のプライベート IP <br> 2. 移行先の IP セグメント | Linux 移行用   |
| カスタム TCP | 9089  | vCenter Converter が導入されている Windows のプライベート IP                          | Windows 移行用 |

今回は vCenter Converter も移行先のセグメントも同じ 192.168.2.0/24 を使うので以下の通りで作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/be8a86df-5a76-abd2-fc06-4f479faca79c.png)


# vCenter Converter で移行をしてみる

準備が整いましたので、vCenter Converter で EC2 インスタンスを VMware Cloud on AWS へ移行してみます。

1. vCenter Converter 用の Windows VM にログインします。
1. vCenter Converter Standalone Clientを起動します。
1. “Convert machine” をクリックします。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/59c1b3b8-71ed-ff7b-bff2-d1a2781e4572.png" width="400" />
1. 以下の通り EC2 インスタンスの情報を入力しました。 IP アドレスは EC2 インスタンスのプライベート IP アドレスを入力しています。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/73b36bed-f153-9e77-972c-090e726be03c.png" width="400" />
1. VMware Cloud on AWS の vCenter の情報を入力します。Connected VPC 経由での接続の場合、 **Proxy mode での接続**が必要な為、[Use proxy mode] にチェックを入れます。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/ec994107-7738-d0eb-3aa5-58dc32b030aa.png" width="600" />
1. 接続できました！！次に移行先のフォルダを指定します。必要に応じて仮想マシン名も変更します。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/de4c7968-2cd3-ebac-1a3a-65447909087a.png" width="550" />
1. 移行先のリソースプールとデータストアを指定します。データストアについてはデフォルトで vsanDatastore が選択されており、変更しないとエラーになるので注意下さい。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/1a307e47-9ac1-e67f-155f-3e8514503f7c.png" width="550" />
1. 必要に応じて設定を編集します。（移行先のネットワークなどを変更します）
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/7895cd7f-44c2-d0d9-1e0b-55a23a0f1ce9.png" width="550" />
1. 設定内容を確認し、Finish をクリックします。
1. 移行が開始され、少し待つと移行が完了します。今回は20分弱で完了しました。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/cac4e225-16c8-a44d-4bbc-cb3d2027430d.png)


# 移行後に実施した事

移行を行った Windows VM について今回はそのまま起動ができませんでした。
ゲスト OS が "Other (64bit)"として起動をしていた為、設定を変更し、ゲスト OS を "Microsoft Windows Server 2016 以降（64ビット）"に変更する事でうまく起動ができました。
VM にログイン後、VMware Tools を導入し、以下の通り無事に仮想マシンの詳細も取得できるようになり正常に稼働が出来ました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/1df0164d-936b-ca09-5e78-cfcc7a387f1f.png)

# Connected VPC では Linux の EC2 インスタンスは移行できない？？（解決済み）

当初は Windows Server ではなく、Ubuntu 16.04 の移行を試していたのですが、色々と設定を変更したり、EC2 インスタンスを再作成したりしたのですが、同じエラーメッセージで失敗してしまいました。
以下のスクリーンショットでは 6 回失敗してますが、vCenter Converter の再導入なども試したので、10 回以上失敗しました。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/aecf3111-219c-cd6b-efba-fb551790cac0.png)

~~[VMware Cloud Tech Zone のドキュメント](https://vmc.techzone.vmware.com/resource/designlet-migrating-aws-ec2-instances-vmware-cloud-aws-using-vcenter-converter-64#deployment-and-configuration-of-vcenter-converter-server)によると Connected VPC での移行の場合は、Proxy mode の利用が必須との事ですが、Linux を移行する際、Proxy mode の指定のチェックボックスが出てきません。。恐らくこれが原因と思われます。~~

→ **（追記）追加のファイアウォールのルールが必要でした。。** 
以下の投稿にて再検証を行い、必要なルールの解説を行なっておりますので、よろしければ参照下さい。

https://qiita.com/mtoyoda/items/10e788729af6564b03a7


# EC2 インスタンスを VMware Cloud on AWS へ移行するユースケース

VMware Cloud on AWS では集約率を上げれば上げるほどコスト効率良く利用ができます。
既に EC2 を利用しているユーザーで、新たに VMware Cloud on AWS を利用する事になった際、コスト効率を高める目的で EC2 インスタンスから VMware Cloud on AWS に移行をする、といったケースが考えられます。


# おまけ: サポートされてない OS の移行を試すとどうなる？
ちなみに Linux インスタンスの移行を試している際に、vCenter Converter でサポートされてない OS (Amazon Linux 2023) でどういう挙動になるか試したところ、最初の Source System の設定部分で早々にエラーとなり、先に進めませんでした。
vCenter Converter 側で最初にサポート OS かどうかのチェックをしているようなのでサポート OS 以外を無理矢理 vCenter Converter で移行するのは難しそうです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/1888e9a4-2c39-3573-1de9-2bae06aaf4b3.png" width="550" />

# まとめ

vCenter Converter で EC2 インスタンスを移行対象として利用する事ができるようになり、移行の幅が広がりました。
Linux についてはサポートされる OS が現時点ではかなり限定されているので、今後サポート OS が増えればより移行のパターンやユースケースが増えると思います。

Connected VPC を利用するケースでは Linux インスタンスの移行がうまくできなかった為、今度は VTGW 経由での接続パターンで Linux インスタンスの移行を試してみたいと思います。

今回は何度も移行に失敗して週末が完全に潰れたので、次回は今回の学びを元にスムーズに移行を試せれば、と思います。。。

# 参考文献及び関連記事
VMware Cloud Tech Zone - Designlet: Migrating AWS EC2 Instances into VMware Cloud on AWS using vCenter Converter 6.4

https://vmc.techzone.vmware.com/resource/designlet-migrating-aws-ec2-instances-vmware-cloud-aws-using-vcenter-converter-64