こんちは!
エキゾチックショートヘア(猫)を飼ってます。
加藤です。
AWS Server Migration Service(以下SMS)を検証してました。
だいたい動きが掴めてきたので、いっぺんまとめようと思います。
1. SMSの使用要件
以下参照
http://docs.aws.amazon.com/ja_jp/server-migration-service/latest/userguide/prereqs.html
2. 概要
VMware社のvSphereESXiサーバーで稼働している仮想マシンを
自動でAWSにイメージを転送し、AMIにしてくれるものです。
3. 前提
当たり前ですが、ESXiサーバの環境と、稼働している仮想マシン、
そしてvCenterサーバーが必要です。
以下参照
http://docs.aws.amazon.com/ja_jp/server-migration-service/latest/userguide/SMS_setup.html
3.1. vCenterサーバ SMS権限のユーザーを作成
以下抜粋
vCenter で以下の権限を持つロールを作成します。
[Datastore] > [Browse datastore and Low level file operations] -
(Datastore.Browse と Datastore.FileManagement)[vApp] > [Export] - (VApp.Export)
[Virtual Machine] > [Snapshot management] > [Create snapshot and Remove Snapshot] - (VirtualMachine.State.CreateSnapshot と VirtualMachine.State.RemoveSnapshot)
次のようにロールを割り当てます。
この vCenter ロールを、コネクター で vCenter へのログインに使用するサービスアカウントに割り当てます。
このロールを伝達権限と共に VM の移行元のデータセンターに割り当てます。
vCenter サービスアカウントのアクセス許可を手動で確認するには、コネクタのサービスアカウントの認証情報を使用して vSphere クライアントにログインできること、VM を OVF テンプレートとしてエクスポートできること、データストアのブラウザを使用して VM があるデータストアからファイルをダウンロードできること、および VM の ESXi ホストの概要タブでプロパティを表示できることを確認します。
今回は面倒なので、Administrator@vsphere.local
で実施しました。
3.2. AWS IAMユーザーとIAMロールの作成
いちいちどの権限が必要かドキュメントみるのも面倒なので、
CloudFormation化した。
下記のスタックを作成したらいいです。
AWSTemplateFormatVersion: '2010-09-09'
Resources:
SmsUser:
Type: AWS::IAM::User
Properties:
ManagedPolicyArns:
- arn:aws:iam::aws:policy/ServerMigrationConnector
Path: '/'
UserName: sms-connector
SmsUserAccessKey:
Type: AWS::IAM::AccessKey
Properties:
UserName: !Ref SmsUser
SmsRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Sid: ""
Effect: "Allow"
Principal:
Service:
- "sms.amazonaws.com"
Action:
- "sts:AssumeRole"
Condition:
StringEquals:
sts:ExternalId: sms
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/ServerMigrationServiceRole
Path: '/'
RoleName: sms-connector-role
Outputs:
AccessKeySmsUser:
Value: !Ref SmsUserAccessKey
SecretKeySmsUser:
Value: !GetAtt SmsUserAccessKey.SecretAccessKey
4. 手順
流れはこんな感じ
- [SMS Connector]をダウンロード
- vCenterサーバから[SMS Connector]をデプロイし起動
- 起動後、IPとか設定
- [SMS Connector]にWebで接続
5. 構成図
SMSはAMI作成までで、インスタンスの作成はAMI選んでインスタンス起動です。
6. sms-connectorダウンロード → デプロイ手順
【AWS環境】
- AWSマネージメントコンソールから[Server Migration Service]を選択
- [今すぐ始める]
- AWS Server Migration Connectorのセットアップ画面から[Download OVA]をクリックし、ダウンロード
【オンプレミス環境】
4. ダウンロードしたovaファイルをvCenterからデプロイする
7. sms-connector設定手順
【オンプレミス環境】
vCenterサーバから[SMS Connector]をデプロイし起動後、以下の手順を実施
1.WebUIで接続
[Get Started now]をクリック
一番下までスクロールし、
[I have read and agree to the AWS License Agreement]をチェックし、[Next]
3.Create a Password画面
sms-connectorのパスワードを入力し、[Next]
4.Network Info画面
デプロイ後はDHCP環境下ではIPアドレスが自動で設定されるため、固定化したい場合は下記の手順を実施する
(sms-connectorデプロイ時に固定のIPを入力したんですが、なぜかDHCPで振られたIPになっとりました。なので改めてここで静的IPを設定)
コンソールから設定
ユーザー名:ec2-user
パスワード:ec2pass
ログインできたら、sudo setup.rb
を入力
コンソールにて変更後、設定したIPアドレスにWebUIから接続する
パスワードを聞かれるので、設定したパスワードでログイン
5.Log Uploads and Upgrades画面
[Next]
6.Server Migration Service画面
SMSで転送先のリージョンを選択する
事前に作成した[IAM User]のAccess Key、Secret Keyを入力する
(最初の手順のCloudFormationで作成した方は[CloudFormation]→[IAMスタック]→[出力]タブにキーがでてるはず)
[Next]
vCenter Host Name:[DNS名 or IPアドレス]
Username:権限のあるユーザー情報を入力
Password:パスワード
「I gnore hostname mismatch and expiration errors for vCenter and ESXi Certificates.」にチェック
[Next]
ちょー簡単っすねw
8. Server Migration Service
8.1. Connector
【AWS環境】
Connectorタブをクリックする。
接続が成功していると下記のうようにステータスが「HEALTHY」になってるはず。
VMware環境の仮想マシン情報を取得する必要があるため、
[サーバーカタログのインポート]をクリックする。
8.2. サーバー
サーバータブ画面が表示される
vSphere環境の仮想マシン一覧情報が表示されているはずなので、移行対象の仮想マシンを選択し、
[レプリケーションジョブの作成]をクリックする。
8.3. レプリケーションジョブ
レプリケーションジョブ作成画面にて、事前に作成したIAMサービスロールを入力する必要がある。
あとは時間どおりジョブが動くはずです。
9. SMSの動作について
ここから細かい動作観察してみたので説明します。(間違ってるかもしれません)
- AWS SMSのジョブが開始
- VMware環境の仮想マシンでスナップショットが作成される
- 対象の仮想マシンからovfファイルが作成され、選択したリージョンのS3バケットへVMDKファイルが転送される
- VMDKファイルをEBSスナップショットへ変換
- S3バケットの中身を削除
- AMIが作成される
9.1. 注意事項
9.1.1. 一点目
SMSのスケジュールジョブは12〜24時間単位で定期的に差分データをAWSヘ送り続けることになるが、
初回転送からジョブを削除するまで、VMware側の仮想マシンスナップショットは残り続ける。
(正確には直近のSMSジョブ時のスナップショットが作られ、古いスナップショットは統合される)
シンプロディスクとかであればあまり問題になりにくいが、シックディスクの場合に大量の変更データが発生するとVMFSストレージを圧迫する可能性があるので、ご注意を
9.1.2. 二点目
SMSの要件に
vCenter バージョン 5.5 以上 (6.5 まで検証済み)
ESXi 5.1 以上 (6.5 まで検証済み)
※ 2017年9月の話です
とあるので上記条件(vcenter6.5、ESXi6.5)でSMSを動かしたところ、初回レプリケーションは成功するが、
2回目の差分レプリケーションが失敗した。
ServerError: Failed to upload delta disk(s) to S3. If this problem persists, please contact AWS support: java.io.FileNotFoundException: https://[vcenterのIP]/folder/win2012r2%2Fwin2012r2-000001-delta.vmdk?dcPath=Datacenter&dsName=data01
メッセージのとおりxxxxx-delta.vmdk
がねえぞ!ということらしい。
差分レプリケーションにdeltaファイルが必要なんですね。
そして、仮想マシンスナップショットにdeltaファイルが作成されるのは
VMFS5まで
VMFS6からはスナップショットを取ると、
000001-sesparse.vmdk
という形式になっとりました。
VMFS5で稼働している仮想マシンであれば問題なく2回目以降の差分レプリケーションも動作するので、お気をつけて。