AWS MGN で VMware Cloud on AWS 上の仮想マシンを Amazon EC2 に移行してみた #1 (パブリックアクセス編)

# 1. はじめに

オンプレミス環境からAmazon EC2に移行する際に利用するツールとして、[AWS Application Migration Service (MGN)](https://aws.amazon.com/jp/application-migration-service/)はよく検討される選択肢かと思います。

VMware Cloud on AWSからもAmazon EC2への移行でも同様にAWS MGNが活用できるので、実際に試してみた手順を備忘録として残します。

ざっくりとしたイメージとしては、VMware Cloud on AWSを「オンプレミスVMware仮想環境」のように扱って、Amazon EC2に移行していると想像いただければと思います。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/f8f1d760-b4a4-7438-1bd6-33223a792294.png)

:::note
今回はInternet Gateway(IGW)経由で移行元VM(のAWS Replicaiton Agent)とAWS MGNをパブリックアクセスさせています。
ENIを経由したプライベートアクセスでのAWS MGN利用パターンは続編記事もご参考ください。
:::

https://qiita.com/sanjushi003/items/88b220a4763f3ca79765

## ちなみに: Amazon EC2 から VMware Cloud on AWS に移行の場合

Amazon EC2からVMware Cloud on AWSに移行(変換)するというアプローチも[VMware vCenter Converter Standalone 6.4 (2023年5月GA)](https://docs.vmware.com/en/vCenter-Converter-Standalone/6.4/vcenter-converter/GUID-0D7EDF71-5A1A-43FA-92D1-B9F95805D40A.html)で可能になっています。次のブログ記事が非常にわかりやすいのでぜひご参考ください。

https://qiita.com/mtoyoda/items/a2a0c96196c58d86e14a

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


# 2. 「AWS Application Migration Service (MGN)」 について

[「AWS BlackBelt AWS Application Migration Service (AWS MGN) 概要」](https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS_MGN_0430_v1.pdf)をご参照ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/8090aa9c-5892-e06d-165b-6bdc3f7210eb.png)


https://www.youtube.com/watch?v=HktS_jCIv9Q

https://aws.amazon.com/jp/application-migration-service/


## AWS MGN エージェント版とエージェントレス版の違い

AWS MGNにはエージェント版とエージェントレス版の２パターンあるのですが、特別な要件がない場合はエージェント版が推奨となっています。今回の記事でもエージェント版についてご紹介します。 (下図はAWS BlackBeltの抜粋)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/203e7043-e37e-2f60-36de-e620111f8a5f.png)

:::note
AWS MGNエージェントレス版は現在VMware vCenterバージョン6.7系、7.0系、8.0系をサポートしています。
https://docs.aws.amazon.com/mgn/latest/ug/agentless-mgn.html

一方AWS MGNエージェント版は移行対象のOSに直接エージェントをインストールするため、VMware仮想環境 (vCenter)バージョンおよび物理環境には依存しません。
:::


AWS MGNでサポートされる対象OSについては次のAWS公式ガイドをご参照ください。

https://docs.aws.amazon.com/ja_jp/mgn/latest/ug/Supported-Operating-Systems.html


# 3. やってみた

次のような構成で試してみました。(下図は再掲)
今回は移行元環境に依存しないAWS MGNエージェント版を利用しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/f8f1d760-b4a4-7438-1bd6-33223a792294.png)


VMware Cloud on AWS上で稼働するCentOS 7系とWindows Server 2019の仮想マシンを移行対象としています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/4bf2b1f0-41ef-cc0c-d22b-0d830eaf201a.png)

次から手順の概要をご紹介します。詳細な手順および利用条件については次のAWS公式ガイドおよび最下部の参考資料まとめをご参照ください。

https://docs.aws.amazon.com/ja_jp/mgn/latest/ug/getting-started.html

## (1) AWS MGN の有効化 (初回のみ)

初回利用の場合、まずはAWS MGNサービスを有効化します。
この際には必要なIAMロールも合わせて作成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/b2da68fd-a068-f9e2-7498-b09107fc9798.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/0647c07f-f46a-dc51-04c5-5a01c27df8c8.png)

## (2) レプリケーションテンプレートの設定

必要に応じてレプリケーションテンプレートの設定を変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/34c15c35-4383-edd6-238a-fff541d9fbd5.png)

レプリケーションサーバー(下図中央)は、AWS MGNが移行元サーバーをAmazon EC2に移行(変換)する際に「一時的に」作成されるEC2インスタンスです。MGNによる各移行フェーズ毎に自動で作成・削除されるためそこまで意識することはないのですが、私は今回レプリケーションサーバー用にStaging VPCを別途新規作成しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/10f5e72b-d9e7-72bf-650c-43ecc97c777a.png)

作成されたレプリケーションサーバーは次のように確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/eb6310e4-0aea-1614-f3c3-1dd64220f6ac.png)

## (3) 起動テンプレートの設定

MGNでの移行先VPC、サブネット、セキュリティグループ、使用ライセンスなどを設定します。
これにより移行後のEC2がどのVPCで稼働するかが決まるため重要な事前ステップとなります。

移行先のVPCは任意ですが、今回私はVMware Cloud on AWSとは無関係のVPCを移行先としています。
(上述のStanging VPCでも、Connected VPCでもよいです。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/ecdcb221-ec7d-ad4e-e230-cb33f2e1a0d3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/4ff72371-e8e0-5c88-4620-edb10033e90e.png)

## (4) Systems Manager (SSM) Agent のインストール (任意)

::: note
任意ですが、MGNでの意向ではSSMエージェントのインストールまで含めることができ、移行後のアクションまで指定することができます。(便利！)

https://docs.aws.amazon.com/mgn/latest/ug/post-launch-settings-editing.html
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/a8a0af56-df62-d647-0cce-07f5d1e62df8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/c5fb7838-3955-cf7e-02a3-18742c0b05c6.png)


## (5) 移行対象のサーバーでAWS MGN エージェントを起動

Linux OS、Windows OSそれぞれで手順がありますが、VMware Cloud on AWS 環境で実施するにあたってのつまづきポイントのみ簡単にご紹介します。
詳細な手順はAWS公式ガイドをご参照ください。

https://docs.aws.amazon.com/ja_jp/mgn/latest/ug/agent-installation.html

### Linux / Windows 共通

::: note warn
S3 endpointsへのTCP:443(HTTPS)アクセス許可
VMware Cloud on AWS環境上の移行対象仮想マシンは、S3 endpointsにアクセスする必要あります。

https://docs.aws.amazon.com/mgn/latest/ug/installing-agent-blocked.html
:::

今回私はMGN用に新規S3 endpointsの作成をせず、またConnected VPC経由でのS3 endpontsへのアクセスもさせず、over Internetの経路でS3 endpointsにアクセスさせています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/1e60a79f-1a07-893d-94f2-2675e7a6b103.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/f98bb787-32b8-0b4e-5cc1-edba53decc76.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/c91aad1f-2bf2-18c3-6d81-4ee33420d4d7.png)


::: note warn
MGN Service へのTCP:1500 アクセス許可
VMware Cloud on AWS環境上の移行対象仮想マシンがMGN Serviceにアクセスする際、TCP:1500およびTCP:443で通信する必要があります。

https://docs.aws.amazon.com/mgn/latest/ug/Network-Requirements.html
:::

TCP:1500は事前定義されたサービスではないので、新規に作成する必要があります。
TCP:443(HTTPS)は事前定義されていますが、今回はわかりやすいようにMGNとして１つにまとめています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/6f4af32e-d789-6668-9c5b-3a7f05413ad5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/81e53d07-6f97-858a-d1f7-ddcc2df2a892.png)


### Linux の場合

::: note
AWS MGNを実行するために、Python 3のインストールが必要となります。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/b01106ce-abac-e931-dfc0-6602f23f4e65.png)

::: note warn
Linux環境でエージェントを実行した際にエージェントのインストールが途中で止まってしまう場合、必要なkernel packagesがインストールされていない可能性があります。
「aws_replication_agent_installer.log」のログファイルを確認してみましょう。
:::

例えば次の場合には、”yum -y ***”で必要なパッケージをインストールしようとしているのが確認できます。

今回この移行元Linux仮想マシンにはインターネットアクセスがないためパッケージをダウンロードできておらず、エージェントの実行に必要なパッケージがインストールできていないため途中で止まるということが起きています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/485e0fb7-759f-070d-ed60-43b74caf0ea4.png)

:::note
今回は移行元Linux仮想マシンに一時的にバブリックインターネットアクセスを許可して必要なパッケージをダウンロードしました。パッケージのインストールが完了したらアクセス許可する通信ポートを最低限に閉じています。
:::

### Windows の場合

:::note warn
Amazon Root CAsのインストール
Amazon trust servicesが提供するルート証明書のインストールが必要となります。
https://www.amazontrust.com/repository/
(私が一番手こずったポイントなのですが、[AWS re:Post](https://repost.aws/ja)で海外のエンジニアが同様な投稿をしているのを発見して対処できました。5つのRoot CAsを全てダウンロードしてインストールしました。)
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/95d83fc2-67ea-a163-d688-2fbdb29cdfdb.png)

## (6) AWS MGNでカットオーバーを実行

AWS MGNではテスト、カットオーバーと大きく２つのフェーズで移行を進めます。
今回は検証なので細かなレプリケーション差分の確認は省略し、カットオーバーの成功および簡単な動作検証だけ実施しました。

いずれもID/Passwordは移行元の環境と同じとなります。

### AWSマネジメントコンソールから各フェーズの確認 (AWS MGN)

AWS MGNから各フェーズごとの進捗を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/56d36c04-185c-6881-37b3-b84e37ddbae3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/d63ad66d-df67-98ad-c363-c2be67a8c4ab.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/626679bb-7ac2-752d-dda0-1130536bd05e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/e412bb79-f526-751d-ff49-5a1040e7e025.png)

### Linux　(カットオーバー完了後)

VMware Cloud on AWS上で稼働させていたCentOS7の仮想マシンを無事Amazon EC2に移行させることができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/ebbd2efb-2ed3-72f0-eeb9-a9e0bfe0ed87.png)

### Windows　(カットオーバー完了後)

VMware Cloud on AWS上で稼働させていたWindows Server 2019の仮想マシンを無事Amazon EC2に移行させることができました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/3219dbdb-f03b-e4a8-d0dd-280de0663943.png)

(検証環境なので贅沢にVMware仮想マシンとしてRAM 32GBを割り当てていたのをすっかり忘れていて、Amazon EC2では[m5.2xlarge](https://aws.amazon.com/jp/ec2/instance-types/m5/)としてデプロイされています。Amazon EC2への移行後はパフォーマンスを考慮しつつリサイズした方が良いかもしれません。)

# 4. さいごに

今回はAWS MGNを活用したVMware Cloud on AWS環境からAmazon EC2への移行を試してみました。

オンプレミスVMware仮想環境からクラウドに移行するに際して、アプリケーションの変更やIPアドレスの変更が難しい仮想マシンなどに対してはVMware HCXやL2延伸などを活用し移行期間を大幅に短縮し、VMware Cloud on AWSに移行(クラウドリフト)するという手法は非常に有効かと思います。

そのあと徐々に時間をかけてアプリケーションを改修していき準備ができた仮想マシンから、あるいはライセンスの観点からAmazon EC2での利用が適する一部の仮想マシンに対しては、今回のように個別にEC2に移行(シフト)していくアプローチもあると知っていただければ幸いです！

## 補足など (CloudEndureとの比較)

Amazon EC2への移行って「CloudEndure」が使えたような・・？ とか、 AWS Server Migration Service (SMS) があったような・・？などの場合はこちらのAWS re:PostやAWS公式サイトもご参考ください。

いずれの場合も現在は AWS Application Migration Service (MGN) が推奨となっています。

:::note warn

CloudEndure Migration を使用して、サーバーまたは仮想環境を AWS に移行したいと考えています。どうすればよいですか?

> A: 2022 年 12 月 30 日以降、CloudEndure Migration はすべての商用 AWS リージョンで利用できなくなりました。CloudEndure Migration は、中国、AWS GovCloud (米国) リージョン、および AWS Outposts で引き続きご利用いただけます。2022 年 12 月 31 日以降、商用リージョンのお客様は AWS Application Migration (MGN) を使用できます。

:::

https://repost.aws/ja/knowledge-center/cloudendure-migration-migrate-data

https://aws.amazon.com/jp/server-migration-service/

https://aws.amazon.com/jp/application-migration-service/when-to-choose-aws-mgn/

> (余談) 「AWS Application Migration Service」の略称が「AWS MGN」なのは若干こじつけみを感じるのですが、AWS公式ではそのように略記しているのでそのまま受け入れています。ちなみに「AWS AMS」は[「AWS Managed Service (AMS)」](https://aws.amazon.com/jp/managed-services/)を指すようです。

# 5. 続編

https://qiita.com/sanjushi003/items/88b220a4763f3ca79765

# 6. 参考にさせていただいた資料

https://aws.amazon.com/jp/blogs/news/migrate-vmware-virtual-machines-to-amazon-ec2-with-the-aws-application-migration-service-replication-agent/

https://repost.aws/articles/ARWz24YQIcQWCo3Io0iQq6cw/aws-application-migration-service-mgn-%E3%81%A8-mgn-v-center-%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%83%AC%E3%82%B9%E3%81%A7-v-mware-%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83-v-mware-cloud-on-aws-%E4%B8%8A%E3%81%AE%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3%E3%82%92-amazon-ec-2-%E3%81%AB%E7%A7%BB%E8%A1%8C%E3%81%99%E3%82%8B

https://dev.classmethod.jp/articles/migrating-vm-from-vmware-cloud-on-aws-with-mgn/


# 7. そのほか関連資料

https://www.youtube.com/watch?v=HktS_jCIv9Q

https://aws.amazon.com/jp/blogs/news/manage-ec2-launch-templates-at-scale-during-rehost-migrations-with-aws-mgn/

https://aws.amazon.com/jp/blogs/news/how-to-use-the-new-aws-application-migration-service-for-lift-and-shift-migrations/

https://aws.amazon.com/jp/blogs/mt/manage-ec2-launch-templates-at-scale-during-rehost-migrations-with-aws-mgn/

https://aws.amazon.com/jp/blogs/mt/aws-application-migration-service-best-practices/

https://aws.amazon.com/jp/blogs/mt/how-to-manage-licenses-for-servers-migrating-to-aws-using-aws-license-manager/

https://aws.amazon.com/jp/blogs/news/accelerating-your-migration-to-aws/

https://qiita.com/sanjushi003/items/ba67935cdc4c5b090a20