AWS Migration Hub＆Application Migration Serviceの基礎

# 内容
オンプレミスのサーバをクラウドに移行する方法としてリホストという手法があります。これはアプリケーションの構成を変更せず、オンプレミスのサーバをそのままクラウドに移行する手法です。リホストの中でも物理サーバや仮想サーバをそのままコンバートして移行する方法があります。その際、AWSで使用可能なサービスとしてAWS Migration HubとApplication Migration Service(AWS MGN)があります。

![vm01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/85a1e016-0650-417d-afce-d836a1caba39.png)

# AWS Migration Hub

AWS Mgration Hubは移行対象サーバの情報の収集、移行、移行後の追跡までの管理を行うことが可能です。情報収集を行う「検出」フェーズでは様々な方法があります。今回は移行対象サーバにエージェントをインストールを行う「AWS Application Discovery Agent」の方式を使用します。また移行ツールは移行対象サーバの情報をレプリケートしてEC2に移行する「AWS MGN」を使用します。

![vm02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/33c1de2b-5798-41f2-b0ad-d34eff1ddd06.png)

今回の移行の構成ですが、パブリックサブネットの中に1台EC2サーバを作成します。このEC2サーバを同じサブネットに移行する構成となります。まず移行元サーバに「AWS Application Discoverty Agent」をインストールしてAWS Migration Hubにデータ収集を行います。

![vm03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/342275d6-387c-4fb8-a36e-57a71a421c9c.png)

パブリックサブネットおよびAmazon Linux 2023を1台構築した状態で下記を設定していきます。まず、IAMユーザを作成し`AWSApplicationDiscoveryAgentAccess/AWSApplicationMigrationAgentPolicy`および下記ポリシーをIAMユーザにアタッチします。

```shell
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "discovery:*",
            "Resource": "*"
        }
    ]
}
```

Discovery Agentをインストールします。インストール後`systemctl status aws-discovery-daemon.service`コマンドでエージェントの状態を確認します。

```shell
curl -o ./aws-discovery-agent.tar.gz https://s3-ap-northeast-1.amazonaws.com/aws-discovery-agent.ap-northeast-1/linux/latest/aws-discovery-agent.tar.gz
tar -xzf aws-discovery-agent.tar.gz
sudo bash install -r ap-northeast-1
systemctl status aws-discovery-daemon.service
```

Discovery Agentからデータ収集を開始します。`aws configure`で作成したIAMユーザのKeyを入力します。`aws discovery describe-agents`コマンドでagent-idを確認後、`aws discovery start-data-collection-by-agent-ids`コマンドを実行します。

```shell
aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]: text
aws discovery describe-agents
aws discovery start-data-collection-by-agent-ids --agent-ids o-xxxxxxxxxxxx
```

Migration Hubに移動後、「検出」⇒「サーバー」の順にクリックしていくと、サーバの情報が取得されています。

![vm04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/b8509523-c747-475d-bba9-01eb038b4d24.png)

また、しばらく待っているとパフォーマンス情報も取得されていることが確認出来ます。

![vm05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/8ce3a284-935b-4a4f-bb6d-f01cae04ee04.png)

これで検出は完了です。移行ステータスを確認すると「開始していません」の状態のため、移行フェーズに進んでいきます。

![vm06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/137a4a0a-9729-4008-bfa4-df7c144ada13.png)

# Application Migration Service(AWS MGN)

Migration Hubの「移行」⇒「ツール」タブからMGNに移動することが出来ます。

![vm07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/e5d78b65-a58a-496d-86a9-f4c647e64e75.png)

まず、AWS MGNについての説明です。こちらもエージェントを使用する方法、使用しない方法がありますが、今回はエージェントを使用します。移行元サーバにエージェントをインストールするとデータのレプリケーションサーバが起動して、レプリケーションサーバが開始されます。レプリケーション完了後、テスト、カットオーバー処理を行うことによって移行先サーバが起動します。また、各種テンプレートの設定を行うことで、レプリケーションサーバの起動設定、移行先サーバの起動設定を行うことが出来ます。

![vm08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/82bf8382-4bb4-4a17-8047-ffa1b0d3585e.png)

レプリケーションテンプレートの「サブネット」を移行元サーバと同様のサブネットに設定します。また「パブリックIPを作成」を「はい」に設定します。

![vm09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/9d922f44-c1c5-42bf-b28f-d16c9cd92174.png)

EC2にレプリケーションエージェントをインストールします。
```shell
wget -O ./aws-replication-installer-init https://aws-application-migration-service-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/latest/linux/aws-replication-installer-init
sudo chmod +x aws-replication-installer-init
sudo ./aws-replication-installer-init
The installation of the AWS Replication Agent has started.
AWS Region Name: ap-northeast-1
AWS Access Key ID: XXXXXXXXXXXXX
AWS Secret Access Key: ****************************************
Identifying volumes for replication.
Choose the disks you want to replicate. Your disks are: /dev/xvda,/dev/nvme0n1
To replicate some of the disks, type the path of the disks, separated with a comma (for example, /dev/sda,/dev/sdb). To replicate all disks, press Enter:
Identified volume for replication: /dev/nvme0n1 of size 30 GiB
All volumes for replication were successfully identified.
Downloading the AWS Replication Agent onto the source server...
Finished.
Installing the AWS Replication Agent onto the source server...
```

インストールが正常に完了後、MGNのコンソールに移動すると対象サーバの情報が追加されています。

![vm10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/9444b7cd-278c-4137-bbfa-e343ce97ba93.png)

テストインスタンス起動のため、起動テンプレートを修正します。「サブネット」を移行元サーバと同様のサブネットに設定し任意のセキュリティグループを設定します。起動テンプレート修正後、「デフォルトバージョンを設定」から修正したものをデフォルトバージョンにします。

![vm12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/fe15a32b-f6ac-4bed-a76a-92dc2d1189c3.png)

しばらく待っているとレプリケーションが完了するため、「テストインスタンスを起動」をクリックします。EC2コンソールに移動すると「AWS Application Migration Service Conversion Server」という名前のテストインスタンスが起動していることを確認出来ます。
」
![vm11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/88d714d9-059c-4c13-bcf3-8b529c31b2b8.png)

テスト完了後、「カットオーバーの準備完了としてマーク」を選択すると次のフェーズに進みます。

![vm13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/47028294-ee55-4b52-89c5-0e96b9cb44d3.png)

その後、「カットオーバーインスタンスを起動」⇒「カットオーバーの最終処理」を選択していくと移行が完了します。Migration Hubからも移行ステータスが完了になっていることを確認出来ます。

![vm15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/01491310-bc79-4c46-9b90-d4bd2a9a2e63.png)

![vm14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/ca4efcbc-31b8-4676-87ef-afc3949b8e52.png)