どこぞのエンジニアの技術に関する備忘録

業務で経験した記録を綴っていきます。

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

はじめに

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

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

Hyper-V上に移行したいVMがあり、同じホスト上にServer Migration Connectorという移行用の管理サーバーをたてます。 (そいつのOSがFreeBSDです。)
そのConnectorを使って、VMAWSへ移行します。
移行したら、AMIとして保管されるので、インスタンスを作成するという流れになります。

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」を選び、
今すぐ始めるをクリックします。
f:id:reflect-refrain:20190106013212p:plain

f:id:reflect-refrain:20190114171824p:plain

今回は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で実行します。 f:id:reflect-refrain:20190114021052p:plain

standalone Hyper-Vなので、1を選択します。
続く質問通りに、
・connectorのIP
・ホストのコンピュータ名¥ログインユーザ名(Hyper-V Administratorグループ所属)
を入力します。

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

Connectorの設定

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

左下の[English]をクリックして、日本語に変更できます。 f:id:reflect-refrain:20190114124909p:plain

・管理コンソールのパスワード設定
・リージョン選択
・作成した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 www.visualstudiogeeks.com