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を使って、VMをAWSへ移行します。
移行したら、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」を選び、
今すぐ始めるをクリックします。
今回は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 www.visualstudiogeeks.com