Amazon Web Services ブログ

VMware 仮想マシンを AWS Application Migration Service レプリケーションエージェントを利用して Amazon EC2 に移行する

はじめに

このブログ記事では、 AWS Application Migration Service (MGN) を使って VMware 仮想マシン (VM) を Amazon Elastic Compute Cloud (Amazon EC2) に移行する手順を順を追って説明します。さらに、移行した VM から VMware 独自ツールを削除するためのカスタムの起動後アクションスクリプトの適用方法も示します。

オンプレミスの VMware のワークロードを Amazon EC2 に移行することで、スケーラビリティの向上、パフォーマンスの改善、運用コストの削減などの大きなメリットが得られます。Application Migration Service は、ブロックレベルのレプリケーションソリューションを提供することで、VMware VM を Amazon EC2 インスタンスに移行するプロセスを簡素化します。移行した VM は Amazon EC2 上で検証しながら、元のソースサーバーからのレプリケーションを継続することができます。このソリューションでは、継続的なデータレプリケーションを行い、切り替えの所要時間を短縮するエージェントベースのレプリケーション手法を選択しています。

ソリューション概要

このソリューション (図 1) は、Application Migration Service 用の専用サブネットを設定するなど、Network settings preparations のガイドに従っています。このサブネットは、ソースサーバーからのデータレプリケーションを行うステージングエリアとして使用されます。テスト用およびカットオーバー用のインスタンスは、「Migrated Resources (マイグレーション済みリソース)」と呼ばれる別の専用サブネットに起動されます。

各 VMware VM にインストールされた AWS Replication Agent が同期プロセスを開始し、データレプリケーションが Stating Area (ステージングエリア) で行われます。レプリケーションは、事前に定義されたreplication (レプリケーション) 設定に基づいて、レプリケーションサーバーによって処理されます。ソースサーバーに接続されたボリュームがレプリケートされると、そのサーバーは「Ready for Testing (テストの準備完了)」としてマークされます。launch (起動) 設定に関しては、それぞれの検証用またはカットオーバー用のインスタンスが Migrated Resources (マイグレーション済みリソース) エリアに起動されます。

このソリューションでは、Application Migration Service の起動後アクションを活用して、それぞれのテスト用またはカットオーバー用のインスタンスに AWS SSM エージェントをインストールします。AWS SSM エージェントにより、VMware 製品の独自アプリケーションなどを削除するようなカスタムスクリプトの実行が可能になります。

この移行ソリューションは、VMware Cloud on AWS およびオンプレミス VMware 仮想環境のどちらに対しても有効です。

図 1 – 左側が AWS Replication Agent をインストールした VMware 仮想環境、右側が 2 つのサブネット (Staging Area および Migrated Resources) を持つ AWS アカウントを示しています

このソリューションでは説明のために、 Linux (RHEL 9) と Windows Server 2019 の VMware 仮想マシンを使用しています。

実装の手順

ステップ 1 – 前提条件

このウォークスルーには以下の事前準備が必要です:

  1. AWS Application Migration Service のドキュメントに定義されている必要な権限を持つ AWS ユーザー
  2. Network settings preparations に定義されたネットワーク設定
  3. サポートされているソースサーバーのオペレーティングシステム。サポートされているオペレーティングシステムの詳細については、Supported operating systems を参照してください。
  4. AWS Replication Agent のダウンロードとインストールに必要な権限を持つソース仮想マシンの認証情報
  5. テスト用およびカットオーバー用のインスタンスで使用する Amazon Virtual Private Cloud (Amazon VPC) のサブネットと、対応するセキュリティグループの指定または新規作成

ステップ 2 – Amazon VPC エンドポイントの作成

ステージングエリアおよびマイグレーション済みエリアのリソースは、プライベートサブネットまたはパブリックサブネットで実行できます。このシナリオでは、両方のサブネットがプライベートです。HTTPS エンドポイントにパブリックアクセスがないため、起動されたインスタンスはインターネットに接続できず、そのため起動後テンプレートを実行できません。SSM エージェントのインストールと起動後アクションの実行を可能にするために、以下の 3 つのエンドポイントサービスを作成する必要があります:

com.amazonaws.<region>.ssm
com.amazonaws.<region>.ec2messages
com.amazonaws.<region>.ssmmessages

  1. 各エンドポイントを作成するには、コンソールで Amazon VPC サービスを開き、「Endpoints」を選択し、右上の「Create Endpoint」を選択してください (図 2)。

    図 2 – Amazon VPC サービスのコンソールの「Endpoints」セクションで、「Create Endpoint」を選択します

  2. AWS services」を選択し、最初のエンドポイント (図 3) com.amazonaws.<region>.ssm を作成してください。<region> は利用する AWS リージョンに置き換えてください。ターゲットの VPC、サブネット、セキュリティグループを選択します。VPC エンドポイントに付与されるセキュリティグループは、マネージドインスタンスのプライベートサブネットからのポート 443 への受信接続を許可する必要があります。最後に、ページの末尾にある「Create Endpoint」を選択してください。

    図 3 – Amazon VPC サービスのコンソールから、エンドポイントを作成します

  3. 3 つの VPC エンドポイントが作成されると、以下のような結果が表示されます (図 4)。

    図 4 – 3 つの VPC エンドポイントが正常に作成され、SSM エージェントのインストールが可能になりました

ステップ 3 – Windows と Linux からの VMware Tools のアンインストールのための起動後アクション

このセクションでは、ソースサーバーが AWS 上で起動された後に VMware Tools を自動的に削除するためのカスタムの post-launch (起動後) 設定の作成について説明します。起動後テンプレートへの変更は、新しく追加されたソースサーバーにのみ適用されることに注意してください。すでにレプリケーションされているソースサーバーの場合は、個々のソースサーバーで起動後設定を変更します。

  1. 左側のパネルから[Post-Launch template (起動後テンプレート)]を選択してテンプレートにアクセスします。起動後アクションの設定を編集し、「Systems Manager agent installation on launched Test and cutover instances (Systems Manager エージェントをインストールし、起動したサーバーでのアクションの実行を許可する)」を有効にする機能をオンにします (推奨)。最後に、「Save template」を選択してください (図 5)。

    図 5 – 今後のテストおよびカットオーバー時に起動するサーバーに対して、 SSM エージェントのインストールを有効にする

  2. VMware Tools から VMware 仮想マシンイメージを削除するために、まずカスタムアクションを作成する必要があります。「Create action」を選択してください (図 6)。

    図 6 – 右上の「Create Action (アクションの作成)」を選択する

  3. Action Settings (アクション設定) に以下の入力を追加してください (図 7)。Windows の起動後スクリプトは Local Service コンテキストで実行されます。
    1. Action Settings :
      1. Action name セクション: CleanUpVMwareTools-Windows
      2. Activate this action」オプションを選択
      3. Systems Manager document name セクション: AWS-RunPowerShellScript
      4. Description セクション: Run a PowerShell script to clean Windows images from VMware tools.
      5. Operationg Systems セクション: Windows
    2. Action parameters
      1. 実行コマンド:
        Remove-Item –path .\VMware –recurse 
        $regpath = “HKLM:\Software\Microsoft\Windows\CurrentVersion\uninstall”
        Get-childItem $regpath | % { 
           $keypath = $_.pschildname 
           $key = Get-Itemproperty $regpath\$keypath 
           if ($key.DisplayName -match “VMware Tools”) { 
              $VMwareToolsGUID = $keypath 
           } 
           Msiexec.exe /x $VMwareToolsGUID /qn /norestart 
        }
      2. workingDirectory: C:\Program Files\
      3. executionTimeout: 300

        図 7 – レプリケートされた Windows インスタンスから VMware Tools を削除する PowerShell スクリプト

  4. Linux インスタンスの場合 (図 8) も、上記の手順を繰り返します。Linux 上のpost-launch (起動後) スクリプトは root ユーザーで実行します。
    1. Action Settings :
      1. Action name セクション: CleanUpVMwareTools-Linux
      2. Activate this action」オプションを選択
      3. Systems Manager document name セクション: AWS-RunShellScript
      4. Description セクション: Run a Shell script to clean Linux images from VMware tools.
      5. Operating systems セクション: Linux

        図 8 – レプリケートされた Linux インスタンスから VMware Tools を削除する Shell スクリプト

         

    2. Action parameters (アクションパラメーター)
      1. 実行コマンド:
        rm -r ./VMware -r
      2. executionTimeout: 300

post-launch (起動後) テンプレート (図 9) には、2つの新しく作成したアクションが表示されます。これらのアクションが「Active」に設定されていることを確認してください。

図 9 – SSM Agent のインストールと、 2 つの新しく作成された起動後アクションが有効になっていることを確認する

ステップ 4 – ソース サーバーの追加と VM への エージェントのインストール

Application Migration Service にソースサーバーを追加するたびに、Replication (レプリケーション) 設定、Launch (起動) 設定、および Post-launch action (起動後アクション) 設定が、デフォルトのテンプレートに基づいて初期化されます。

ソースサーバーを Application Migration Service に追加したら、[Source servers] のページからそれらを監視し、操作できます。このページでは、すべてのソースサーバーを表示し、移行ライフサイクル、データレプリケーション状態を監視し、各サーバーの移行プロセスの次のステップを確認し、さまざまなカテゴリーでサーバーをソートできます。

Windows ソースサーバーを追加するには、[Source servers] ページで [Add server] を選択します。

図 10 の以下のオプションを使用して、インストーラーコマンドを作成し、IAM アクセス キー ID と IAM シークレットアクセスキーを追加します。生成されたコマンドをコピーし、インストーラーをダウンロードします。

図 10 – AWS Replication Agent のインストーラー コマンドラインの生成

インストーラーをダウンロードしたら、コピーしたコマンドを PowerShell で実行します。各 Windows サーバーでは、管理者権限でエージェントのインストーラーファイルを実行する必要があります (図 11)。

図 11 – Windows ソースサーバーでエージェントのインストーラーコマンドを実行する

ホスト名を控えておき、Application Migration Service コンソールに移動します。

AWS Replication Agent がインストールされると、対象サーバーは Application Migration Service コンソール内の [Source Serves] に追加され、初期同期プロセスが開始されます。

ステップ 5 – テストインスタンスの起動

ソースサーバーの AWS への移行をカットオーバーする前に、AWS 環境内のソースサーバーの適切な機能を確認するためのテストを行う必要があります。 テストインスタンスを起動する前に、ソースサーバーがテストの準備ができていることを確認してください。[Source servers] ページで次の状態を確認してください。

  1. 「Migration Lifecycle」列では、サーバーの状態が「Ready for testing (テストの準備完了)」になっている
  2. 「Data replication status」列では、サーバーの状態が「Healthy (正常)」になっている
  3. 「Next Step」列では、サーバーの状態が「Launch test instance (テストインスタンスを起動)」になっている

1 つ以上のソース サーバーのテストインスタンスを起動するには、以下の手順に従います。

  1. [Source servers] ページに移動します
  2. テスト対象のサーバーの横にあるチェックボックスを選択します
  3. [Test and cutover] メニューを選択します
  4. 「Testing」の欄で、[Launch test instances (テストインスタンスを起動)] を選択して、選択したソースサーバーのテストインスタンスの起動を開始します (図 12)

図 12 – [Test and cutover (テストとカットオーバー)] ドロップダウンメニューから [Launch Test instances (テストインスタンスを起動)]を選択する

  1. 対象サーバー X に対して「Launch test instances for X servres」のダイアログが表示されたら、[Launch] を選択してテストを開始します
  2. AWS Application Migration Service コンソールには、テストが開始されると「Launch job started (起動ジョブの開始)」と表示されます。「Launch history (起動履歴)」内のダイアログの [View job details (ジョブの詳細を表示)] を選択すると、テストインスタンスの起動ジョブの詳細を確認できます
  3. Source servers ページの各種インジケーターを確認すると、テストインスタンスの起動が正常に開始されたことを確認できます (図 13)
    1. Alerts」列には、このサーバーのテストインスタンスが起動されたことを示す 「Launched (起動済み)] の状態が表示されます
    2. 「Migration Lifecycle」列では、「Test in progress (テスト中)」の状態が表示されます
    3. 「Next step」列では、「Complete testing (テストの完了)]」が表示され、 「Ready for cutover (カットオーバーの準備完了)」とマークされます

図 13 – テストが完了したら、対象サーバーを [Ready for cutover (カットオーバーの準備完了)] としてマークする

テストインスタンスが起動されたら、それらに接続してアクセスします。あるいは、AWS SSM Session ManagerAWS SSM Fleet Manager を使ってこれらのインスタンスにログインすることもできます。これは、アプリケーションの適切な機能、接続性、受け入れテストを確認するために活用できます。

テストが完了し、カットオーバーの準備ができたら、テストを終了します。ソースサーバーの移行ライフサイクルの状態を [Ready for cutover (カットオーバーの準備完了)] に変更します。これにより、すべてのテストが完了し、カットオーバーの準備ができたことを示します。最終的に、[Terminate test launched instances (起動したテストインスタンスの終了)] を選択して 「Test in progress (テスト中)」の状態を終了します。

Post-launch (起動後) アクションを確認します。

  1. [Source servers] を選択し、[Post-launch settings] を開きます
  2. トリガーされるアクションを確認するために、「Active」 フィルターを適用します。次のアクションがトリガーされます (図 14)

SSM agent
CleanUpVMwareTools-Linux

図 14 – 実行されるPost-launch (起動後) アクションを確認する

インスタンスが起動されると、「Migration dashboard」タブ内で、SSM Agent のインストールと CleanUpVMWareTools の実行状況を確認できます (図 15)。

図 15 – すべてのアクションが正常に完了したことを確認する

ステップ 6 – カットオーバーインスタンスの起動

  1. テストを完了したいテストインスタンスが起動されているソース サーバーの横にあるチェックボックスを選択します
  2. [Test and cutover] メニューを選択します (図 16)
  3. Testing セクションで [Ready for cutover (カットオーバーの準備完了)] オプションを選択します

図 16 – カットオーバーインスタンスを起動するために [Ready for cutover (カットオーバーの準備完了)] としてマークする

[Mark X servers as Ready for cutover] ダイアログでは、テストインスタンスの終了方法を選択できます。これらのインスタンスは稼働している限り不要になっても課金されるため、終了することを推奨します。テストインスタンスの終了を進めるには、[Yes, terminate launched instances (recommended)] を選択し、[Continue] を選択します。

AWS Application Migration Service コンソールに、対象サーバーが「Ready for cutover (カットオーバーの準備完了)」としてマークされたことが確認されます。

カットオーバーインスタンスの起動を進める前に、Source servers ページで以下の状態を確認し、ソースサーバーでカットオーバーの準備ができていることを確認します (図 17)。

  1. 「Migration lifecycle」の状態が 「Ready for cutover (カットオーバーの準備完了)」
  2. 「Data replicaiton」の状態が「Healthy (正常)」
  3. 「Next Step」が 「Terminate launched instance; Launch cutover instance」 (最新のテストインスタンスを終了していない場合) 、または 「Launch cutover instance」(最新のテストインスタンスを終了した場合)となっている

図 17 – マイグレーション状況が「Ready for cutover (カットオーバーの準備完了)」、データレプリケーションの状態が「Active (正常)」であることを確認する

1 台以上のソースサーバーのカットオーバーインスタンスを開始するには、以下の手順に従います。

  1. [Source Servers] ページにアクセスし、カットオーバーする対象サーバーを選択します
  2. [Test and cutover] メニューを選択します
  3. Cutover」(図 18) の欄で、[Launch cutover instances (カットオーバーインスタンスを起動)] を選択します
  4. 起動されるカットオーバーインスタンスとそれぞれの名前が表示されるポップアップダイアログが表示されます。[Launch (起動する)] を選択します

図 18 – 「Test and cutover」メニューから [Lanuch cutover instance (カットオーバーインスタンスを起動)] を選択する

Source servers」ページ (図 19) では、 「Migration lifecycle」列に 「Cutover in progress (カットオーバーが進行中)」が表示され、「Next step」列に 「Finalize cutover (カットオーバーを最終処理)」が表示されます。

図 19 – 「Migration lifecycle」が「Ready for cutover (カットオーバーの準備完了)」から「Cutover in progress (カットオーバーが進行中)」に変更された

ソースサーバーを選択して、ジョブの詳細を表示します (図 20)。

図 20 – 現在のライフサイクルは「Cutover in progress (カットオーバーが進行中)」であり、カットオーバーインスタンスが起動されている最中であることを示しています

カットオーバーインスタンスを Amazon EC2 コンソールから起動します。または、AWS SSM Session Manager や Fleet Manager を使ってインスタンスに接続することもできます。この手順は、アプリケーションの適切な動作、接続性の確認、受け入れテストを行うために必要です。

移行が完了したら、カットオーバーを最終処理します (図 21):

  1. カットオーバーするソースサーバーをそれぞれ選択します
  2. [Finalize cutover (カットオーバーの最終処理)] を選択します

図 21 – 「Finalize cutover (カットオーバーの最終処理」に切り替えてデータレプリケーションを停止する

「Finalize cutover for X servers」ダイアログで、[Finalize] を選択してカットオーバーを開始します。このアクションにより、ソースサーバーの「Migration lifecycle」の状態が「Complete cutover (カットオーバー完了)」に更新され、移行が正常に完了したことが示されます。また、データレプリケーションが停止され、関連する AWS EBS ボリュームとAmazon EC2 レプリケーションサーバーが破棄されます。カットオーバーが正常に完了すると、Application Migration Service コンソールに「Cutover finalized (カットオーバー完了)」と表示されます。

クリーンアップ

不要な課金が継続されることを避けるために、次のような関連リソースを削除してください。

  • Amazon EC2 インスタンスを削除する
  • Application Migration Service のソース サーバーに対して [Disconnect (切断)] を実施する
  • テスト用に関連付けられた EC2 インスタンスの EBS ボリュームの削除を削除する
  • VPC エンドポイントを削除する

まとめ

この記事では、VMware VM を Amazon EC2 にオンデマンドで移行するための一連の手順を説明しました。この手法の主なメリットは自動化であり、これにより人為的なエラーを大幅に削減し、移行を加速することができます。起動後のアクションでは、VMware tools からイメージを削除します。AWS Application Migration Service (MGN) は費用対効果が高く、VMware 仮想環境がオンプレミスまたは VMware Cloud on AWS 上にあるかどうかに関わらず、移行ソリューションとして魅力的です。

追加の参考情報については、以下のApplication Migration Service (MGN) ユーザーガイドを参照してください。

著者について

Kalyan Vennelakanty

Philippe Wanner

Philippe は Amazon Web Services (AWS) のシニアスペシャリスト ソリューションアーキテクトです。 EMEA (ヨーロッパ、中東、アフリカ) 地域において、マイグレーションとモダナイゼーションのベストプラクティスと戦略の策定を支援しています。現在は、ビジネストランスフォーメーション、分散システムおよびサーバーレスアーキテクチャに関する学際的な分野にフォーカスしています。

Kalyan Vennelakanty

Simon Vaillancourt

Simon は Amazon Web Services (AWS) の スペシャリスト ソリューションアーキテクトとして公共セクターのお客様を支援しています。 美しいケベック州ケベック・シティを拠点とし、カナダ全体のお客様をサポートしています。キャリアを通して、民間および公共の大規模なデータセンターおよびインフラストラクチャのデプロイメント / マイグレーションに関する豊富な経験を積んできました。

翻訳は、Specialist Solutions Architect – VMware Cloud on AWS の武田が担当しました。原文はこちらです。