【ド直球】Server Migration ServiceでAzureの仮想マシンをAmazon EC2に移行できるようになりました

2019.04.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

中山(順)です

Server Migration ServidceでAzure Virtual MachineをAmazon EC2に移行できるようになりました。

Announcing Azure to AWS migration support in AWS Server Migration Service

...「右ストレートでぶっとばす」という台詞が聞こえてきそうです。 もちろん、Azure VMとEC2に決定的な差があるとは思っておりません。

やってみた

移行元

検証用に仮想ネットワークおよび仮想マシンを作成しておきます。

この後、移行のためのConnectorを作成しますが、同じ仮想ネットワーク上に作成します。

Connectorの作成

SMSで仮想マシンを移行するためには、Azureの仮想ネットワーク上にConnector(仮想マシン)を作成する必要があります。

作成の手順はこちらのドキュメントを参照してください。

Installing the Server Migration Connector on Azure

Connectorを作成する方法はスクリプトを実行する方法とマニュアルで作成する方法がありますが、今回はスクリプトで実行します。

Connectorを作成するためのスクリプトを手元のクライアントにダウンロードします。

Step 1: Download the Connector Installation Script

Step 2: Validate the Integrity and Cryptographic Signature of the Script File

次に、ダウンロードしたスクリプトを実行します。 スクリプトはPowerShellのため、実行可能な環境をご用意ください。

Step 3: Run the Script

スクリプトを実行すると、Connectorをデプロイするストレージアカウントと仮想ネットワークの入力を要求されます。今回は移行元の環境で利用しているものを利用します。

また、Azureの資格情報の入力を要求されますので、入力します。今回はグローバル管理者のユーザーを利用しました。

Connectorのデプロイが完了すると、Object Id of System Assigned Identity for Connector VM が表示されます。後続の作業で必要になるため、メモしておきましょう。

*******************************************************************************************
[INFO] Connector VM Name: "sms-connector-vm-japaneast" (Resource Group: "sms-connector-rg-japaneast")
[INFO] Connector Private IP: 10.0.0.5
[INFO] Object Id of System Assigned Identity for Connector VM: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
[INFO] From a VM in VNet: aws-sms-vnet, Goto https://10.0.0.5
[INFO] Complete Connector Registration. Use the above Object Id at the last step of Registration.
*******************************************************************************************

Connectorのデプロイが完了したら、AWSに各種情報を送信したりできるように構成を行います。設定は、同じ仮想ネットワーク上からブラウザ経由で行います。 今回は、移行元の仮想マシンから行いました。

デプロイの完了時にConnectorのIPアドレスが表示されるので、ブラウザでアクセスします。

ライセンス契約に同意します。

管理コンソール (HTTPS) のパスワードを設定します。

次に、Connectorに対してSSHでアクセスして管理できる旨のメッセージが表示されます。 初期パスワードは非常に簡便なものになっていますので、必要に応じて変更してください。 スクリーンキャプチャは割愛します。

ちなみに、SSHでアクセスすると以下のようなメニューを表示させることができます。

$ sudo setup.rb
Thanks for downloading the Server Migration Connector
Welcome to command line setup

Choose one of the following options:
         1. Reset password
         2. Reconfigure network settings
         3. Restart services
         4. Factory reset
         5. Delete unused upgrade-related files
         6. Enable/disable SSL certificate validation
         7. Display Connector's SSL certificate
         8. Generate log bundle
         9. Exit
Please enter your option [1-9]:

SMSの使用方法に関する情報収集の可否について、同意をします。 同意は必須ではありません。 個人としては、こういうのは同意する派です。

リージョンおよびアクセスキーを設定します。 必要な権限は以下のドキュメントをご確認ください。

Configure an IAM User for Server Migration Connector

Object Id of System Assigned Identity for Connector VMを入力します。Connectorのデプロイ完了時に表示されたIDです。

これで、Connectorの設定は完了です。

Connectorのダッシュボードを表示すると、各種設定やステータスを確認できます。

あとでダッシュボードにアクセスするには設定した管理コンソールのパスワードが必要となります。

仮想マシンのレプリケーション

ここまでで仮想マシンを移行する準備が整いました。

ここからはAWSのマネージメントコンソールから作業をしていきます。

まず、AWS上でConnectorが認識されていることを確認します。

次にAzure上の仮想マシン情報をインポートします。

サーバー情報がインポートできたら、レプリケージョンジョブを作成します。

ライセンスタイプやスケジュール、サービスロールなど、各種設定を行います。 今回は、1回だけジョブを実行するように設定しました。 サービスロールに必要な権限は以下のドキュメントをご確認ください。

Configure a Service Role for AWS SMS

しばらくするとレプリケーションジョブが開始されます。

ジョブが完了すると、AMIが作成されます。 今回は2時間くらいで完了しました。 移行元のディスクサイズは、128GB+10GBでした。

動作確認

AMIからEC2インスタンスを作成してみます。 インスタンスの作成方法自体は特に変わりません。 以下の通り、無事作成できました。

インスタンスへのログインですが、今回は移行元の仮想マシンを起動したままレプリケーションを実行しており、明示的にsysprepを実行していたわけではないので、Azureで利用していた認証情報をそのまま利用します。 キーペアの秘密鍵を利用して管理者ユーザーのパスワードを発行しようとしても表示されません。

RDPでログインすると、仮想メモリに関する設定に問題があるとのことで再設定を促されました。 偶然表示されたのかもしれませんが、表示された場合は設定を行いましょう。

作成したEC2インスタンスにSSM AgentやEC2Configがインストールされていることも確認できました。

まとめ

このように、簡単に仮想マシンを移行できました。

正直、AzureからAWSへ移行するというケースがどの程度あるのかわからないなーとは思いますが、機会があればまた使っていたいです。 DR対策などでも利用するケースもあるかもしれませんね(AWSやAzure、GCPなどの「プラットフォーム全体」が障害で利用できないケースを想定する)。

現場からは以上です。