はじめに

ServerMigrationService(SMS)を触る機会があったので、気になったところだけまとめてみました。
実はHyper-Vも初めてで、FreeBSDも初めて触りました。

今回使用した環境は、
スタンドアロンの Hyper-V、
Hyper-V ホストOSは、WIndows Server 2012R2 を使いました。
リージョンは東京です。

SMSの要件は下記に記載されております。

サポートされているオペレーティングシステムをオンプレミスで実行している VM は、AWS SMS を使用してクラウドに移行できます。

docs.aws.amazon.com

設定手順は下記の公式ユーザーガイドに記載されております。
https://docs.aws.amazon.com/ja_jp/server-migration-service/latest/userguide/server-migration-ug.pdf

このユーザーガイドをもとに進めていきます。

Hyper-Vホストにログインするユーザーの作成

Hyper-Vホストにログインするユーザーを作成し、Hyper-V Administratorグループに追加しておいて下さい。

以降は手順通りに進めていきます。

Server Migration ConnectorのIAMユーザー作成

ポリシーは、管理ポリシーのServerMigrationConnectorをアタッチします。

SMS用IAMロールの作成

使用するサービスを選択する画面でSMSを選んだら、自動的にポリシーが選ばれます。

Hyper-Vホスト上の準備

ホストにログインして、WinRM HTTPとHTTPS リスナーを許可します。
WinRM HTTPの方は Windows Server 2012 以降ならデフォルトで有効なので、
WinRM HTTPSの方を設定しないといけません。
※設定していないと、あとで実施するPowerShellスクリプトでエラーになります。

▼WinRM HTTPSリスナー設定
管理者でPowerShellを起動してWInRMの現在のリスナーを確認

winrm e winrm/config/listener

オレオレ証明書を作成します。

New-SelfSignedCertificate -DnsName <YOUR_DNS_NAME> -CertStoreLocation Cert:\LocalMachine\My -KeyAlgorithm RSA -KeyLength 2048

表示されたThumbprintをメモしておき、下記コマンドで設定します。

winrm create winrm/config/Listener?Address=*+Transport=HTTPS '@{Hostname="<YOUR_DNS_NAME>"; CertificateThumbprint="<COPIED_CERTIFICATE_THUMBPRINT>"}'

「セキュリティが強化されたファイアウォール」の 受信の規則 に5986ポートを追加して、下記コマンドでHTTPSリスナーが追加されたか確認します。

winrm e winrm/config/listener

Connectorに必要なものをダウンロード

AWSコンソールのサービス一覧から「ServerMigrationService」を選び、
今すぐ始めるをクリックします。

今回はHyper-Vホスト上からwgetコマンドでダウンロードしました。 ※wgetの設定は割愛します。

wget -P <保存パス>https://s3.amazonaws.com/sms-connector/AWS-SMS-Connector-for-SCVMM-HyperV.zip --no-check-certificate

インストールスクリプトをダウンロード

wget -P <保存パス>https://s3.amazonaws.com/sms-connector/aws-sms-hyperv-setup.ps1 --no-check-certificate

Connector の構築

ダウンロードした
AWS-SMS-Connector-for-SCVMM-HyperV.zip
を展開して、仮想マシンをインポートします。

インポートウィザードが完了したら、起動して仮想マシンを右クリックして接続します。

user: ec2-user  
password: ec2pass  

でログインします。

ログインしたら、下記を実行してネットワークの設定します。
※もし静的ルートの設定が必要ならやっておくこと。末尾に記載している「Connectorに静的ルートが必要な場合」を参照

sudo setup.rb

Hyper-VとSMSとの通信設定

Hyper-Vホスト上でPowerShellを管理者として実行し、 ダウンロードしたスクリプトファイルをPowerShellで実行します。

standalone Hyper-Vなので、1を選択します。
続く質問通りに、

  • connectorのIP
  • ホストのコンピュータ名¥ログインユーザ名(Hyper-V Administratorグループ所属)

を入力します。

全部OKでエラーがなければ完了です。

Connectorの設定

Hyper-Vホスト上のIEを開き、
https:// <connectorのIP> /
にアクセスします。

左下の[English]をクリックして、日本語に変更できます。

  • 管理コンソールのパスワード設定
  • リージョン選択
  • 作成したIAMユーザーのアクセスキーとシークレットキーを入力

設定進めていき、
最後に、ホストの情報を入力して、証明書を認証します。
コネクタのダッシュボードが表示されたら完了です。

レプリケーション開始

AWSのSMSのコンソール画面にいき、
Connector画面で[サーバーカタログのインポート]を行うと、サーバーの画面でホスト上のVM一覧が表示されます。
移行したいVMを選択して、[レプリケーションの作成]を実行します。

  • ライセンスタイプの選択
  • レプリケーションジョブの設定

を行って、レプリケーションを開始します。

完了したらAMIがあるか確認し、起動して動作確認します。

まとめ・感想

connectorの準備さえできてしまえば、レプリケーションは簡単でした。
Hyper-VでのSMSの情報があまりないうえに、キャプチャもあまりなかったので手探りな部分はありましたが、なんとかできました。
今回は切り替えを考慮せず、一度のみのレプリケーションでしたが、SMSを使うにはどういった設定が必要なのかを知ることができました。

ちなみに、コネクタの要件にActiveDirectoryと書いてありますが、今回のような場合ではHyper-V Administratorのグループに所属してるユーザーさえあれば問題なさそうです。

補足: Connectorに静的ルートが必要な場合

sudo route add -net <DESTINATION_GATEWAY> -netmask <NETMASK> <GATEWAY>

rc.confに下記を追加(再起動しても反映されるよう設定)

sudo vi /etc/rc.conf

static_routes="10"
route_10="-net <DESTINATION_GATEWAY> -netmask <NETMASK> <GATEWAY>" 

参考URL

FreeBSDにおけるスタティックルートの設定 

新しくネットワークカードを増設したりネットワーク構成を変更してデフォルトルート以...

www.omakase.org

How to configure WinRM for HTTPS manually

In this post we will see how you can configure WinRM (Windows Remote Management) service to work with HTTPS manually.

www.visualstudiogeeks.com

元記事はこちら

AWS ServerMigrationServiceやってみた 〜 Hyper-V編 〜