7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Server Migration Service[SMS]を使ってVMware環境からAWSへ

Last updated at Posted at 2017-10-10

こんちは!
エキゾチックショートヘア(猫)を飼ってます。
加藤です。

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化した。
下記のスタックを作成したらいいです。

iam.yml
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. 手順

流れはこんな感じ

  1. [SMS Connector]をダウンロード
  2. vCenterサーバから[SMS Connector]をデプロイし起動
  3. 起動後、IPとか設定
  4. [SMS Connector]にWebで接続

5. 構成図

sms構成.png

SMSはAMI作成までで、インスタンスの作成はAMI選んでインスタンス起動です。

6. sms-connectorダウンロード → デプロイ手順

【AWS環境】

  1. AWSマネージメントコンソールから[Server Migration Service]を選択
  2. [今すぐ始める]
  3. AWS Server Migration Connectorのセットアップ画面から[Download OVA]をクリックし、ダウンロード

【オンプレミス環境】
4. ダウンロードしたovaファイルをvCenterからデプロイする

7. sms-connector設定手順

【オンプレミス環境】
vCenterサーバから[SMS Connector]をデプロイし起動後、以下の手順を実施

1.WebUIで接続
[Get Started now]をクリック
sms-connector01.png

2.Lincense Agreement画面
sms-connector02.png

一番下までスクロールし、
[I have read and agree to the AWS License Agreement]をチェックし、[Next]
sms-connector03.png

3.Create a Password画面
sms-connectorのパスワードを入力し、[Next]
sms-connector04.png

4.Network Info画面
デプロイ後はDHCP環境下ではIPアドレスが自動で設定されるため、固定化したい場合は下記の手順を実施する
(sms-connectorデプロイ時に固定のIPを入力したんですが、なぜかDHCPで振られたIPになっとりました。なので改めてここで静的IPを設定)
sms-connector05_edit.png

コンソールから設定
ユーザー名:ec2-user
パスワード:ec2pass
ログインできたら、sudo setup.rbを入力
sms-connector06.png

IP設定の場合は2を選択
sms-connector07.png

コンソールにて変更後、設定したIPアドレスにWebUIから接続する
パスワードを聞かれるので、設定したパスワードでログイン
sms-connector08.png

[Next]
sms-connector09.png

5.Log Uploads and Upgrades画面
[Next]
sms-connector10.png

6.Server Migration Service画面
SMSで転送先のリージョンを選択する
事前に作成した[IAM User]のAccess Key、Secret Keyを入力する
(最初の手順のCloudFormationで作成した方は[CloudFormation]→[IAMスタック]→[出力]タブにキーがでてるはず)
[Next]
sms-connector11.png

vCenterサーバの情報を入力する
sms-connector12.png

vCenter Host Name:[DNS名 or IPアドレス]
Username:権限のあるユーザー情報を入力
Password:パスワード
「I gnore hostname mismatch and expiration errors for vCenter and ESXi Certificates.」にチェック
[Next]
sms-connector13.png

AWSとの接続が成功すると下記のような状態になる
sms-connector14_edit.png

ちょー簡単っすねw

8. Server Migration Service

8.1. Connector

【AWS環境】
Connectorタブをクリックする。
接続が成功していると下記のうようにステータスが「HEALTHY」になってるはず。
aws_sms01_edit.png

VMware環境の仮想マシン情報を取得する必要があるため、
[サーバーカタログのインポート]をクリックする。

8.2. サーバー

サーバータブ画面が表示される
vSphere環境の仮想マシン一覧情報が表示されているはずなので、移行対象の仮想マシンを選択し、
[レプリケーションジョブの作成]をクリックする。

8.3. レプリケーションジョブ

レプリケーションジョブ作成画面にて、事前に作成したIAMサービスロールを入力する必要がある。

あとは時間どおりジョブが動くはずです。

9. SMSの動作について

ここから細かい動作観察してみたので説明します。(間違ってるかもしれません)

  1. AWS SMSのジョブが開始
  2. VMware環境の仮想マシンでスナップショットが作成される
  3. 対象の仮想マシンからovfファイルが作成され、選択したリージョンのS3バケットへVMDKファイルが転送される
  4. VMDKファイルをEBSスナップショットへ変換
  5. S3バケットの中身を削除
  6. 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回目以降の差分レプリケーションも動作するので、お気をつけて。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?