Migrate for Compute Engine (M4CE) を利用して VMware vSphere 環境の仮想マシンを Google Cloud Compute Engine に移行する

Takao Setaka
google-cloud-jp
Published in
29 min readDec 7, 2021

この記事は Google Cloud Japan Advent Calendar 2021 および vExpert Advent Calendar 2021 の 7日目の記事です。2つの Advent Calendar を1つのBlog記事でまとめて済ませようとする罪深き(合理的な?)私をお許し下さい…。

■TL;DR

  • Google Cloud が提供する Migrate for Compute Engine を用いることで、VMware vSphere 環境の VM をとても簡単に移行し、自動的に最適化することができる
  • Migrate for Compute Engine は Google Cloud 上で提供する VMware 環境である VMware Engine (GCVE) から Compute Engine への移行にも利用できる
  • M4CE v5.0 では増分レプリケーションにより移行データ転送量を最小化するとともに、移行に伴う停止時間を最小化できる
  • M4CE 自体は無料で利用できる(ただしサポートや、レプリケーションデータ保存のためのストレージなどの必要リソースの利用に対しては通常の料金がかかる)

■ 1. はじめに

Google Cloud の Compute Engine は、Google Cloud が提供するインフラストラクチャにおいて仮想マシンの作成・実行環境を提供するコンピューティングサービスです。他のクラウドと同様に事前定義されたマシンタイプも提供していますが、合わせてカスタムマシンタイプと呼ばれる vCPU 数やメモリサイズを自由に調整可能な VM もご利用頂ける点が特徴の1つであり、これにより必要とするリソース構成に最適化するとともにコストも最適化することが可能です。また、Spot マシンと呼ばれる、需要状況に応じて予告の上で停止される可能性がある代わりに60〜91%の割引という非常に低価格で提供されるクラウドならではの VM もご利用いただけます。

Compute Engine は Google のインフラストラクチャに合わせて最適化された KVM をベースとして使用していますが、QEMU は使用せずによりセキュアな仮想マシンモニタを独自に開発し使用するなど、セキュリティを非常に重視した実装基盤となっています。近年では Shielded VM としてセキュアブートや vTPM、整合性モニタリングなどに対応し、より高いセキュリティを標準的に提供しています。また、現在では Confidential VM と呼ばれるメモリ上に保持しているデータの暗号化も提供しています。

Compute Engine の VM を作成する方法としては、Cloud Console や gcloud コマンド、API などを通じて新規に作成することはもちろん、VMDK や VHD などの仮想ディスクイメージをインポートする方法や、OVF/OVA仮想アプライアンスをインポートする方法、そして2021年12月時点ではPreview扱いですが Amazon Machine Images (AMI) のインポートにも対応しています。そして、これらと並んでご利用頂ける移行手段の1つが、今回ご紹介する “Migrate for Compute Engine” 移行ツールを利用した既存サーバの移行です。なお、Compute Engine に対するインポート方法の選択肢についてはこちらを参照下さい。

仮想ディスクやイメージのインポートではなく Migrate for Compute Engine (以下、略称として M4CE と記載)をご利用頂くことのメリットとしては、以下のような項目があります。

  • 既存環境を可能な限り「そのまま」で移行できる
  • 移行に伴う停止時間の最小化(スナップショットを利用した増分レプリケーション同期と既存環境に影響を与えないテストクローン対応)
  • 移行に伴って後処理として必要となる各種最適化の自動適用
  • 複数 VM のグループ移行
  • 移行テストの実施やカットオーバー後のレプリケーション再開への対応

■ 2. M4CE による VMware VM の移行概要

Google Cloud は、Migrate for Compute Engine (M4CE) と呼ばれる仮想マシン移行ツールを提供しています。2021/12時点で M4CE は Version 5.0 と 4.x の2系統が提供されており、移行方式や移行元対応などに違いがあります。詳細比較についてはこちらを参照ください。

今回は M4CE を用いた Compute Engine への移行の中でも、M4CE v5.0 を用いた VMware vSphere からの VM の移行にフォーカスしてご説明します。

■ 3. M4CE v5.0 概要

M4CE v5.0 は東京リージョンを含むこちらのページ記載のリージョンで使用できます。M4CE v5.0 それ自体の使用は無料です。ただし、M4CE の利用に伴って必要となる各リソースについては課金の対象となります。詳しくはこちらを参照ください。

M4CE v5.0 では、移行元VMが稼働する VMware vSphere 環境に Migrate Connector と呼ばれる仮想アプライアンスを展開して利用します。Migrate Connector は、vCenter Server と vSphere API で連携することで VM に対するスナップショットの作成や最終移行時の VM の停止操作などを制御するとともに、Google Cloud 側と HTTPS (443/tcp) でデータパスを確立し、この経路を通じて VM データの Google Cloud への転送を行います。

Migrate for Compute Engine (M4CE) v5.0 概要図

Migrate Connector を紐付ける Project (=ホストプロジェクト)では、VM Migration API 及び必要となる関連サービスの有効化が必要です。また、M4CE に関する IAM ロールとしては、VM Migration 管理者(roles/vmmigration.admin)と VM Migration 閲覧者(roles/vmmigration.viewer)が事前定義されています。

移行データの転送経路としては Migrate Connector から Google Cloud への外向け 443/tcp ポート通信のみが使用されるため、データセンター内部から Internet への HTTPS(443/tcp) 通信が許可されている環境であれば、ファイアウォール等の追加構成や、Google Cloud との間でのVPNの接続構成などは不要です。なお、Internet への通信に Proxy を必要とする構成にも対応しますが、認証が必要となる Proxy には対応していませんのでご注意下さい。また、移行データの転送に Internet を経由させたくない場合は、Cloud Interconnect による専用線接続と限定公開の Google アクセスの仕組みをご利用頂くことも可能です。構成可能な接続パターンと関連要素についての詳細はこちらのガイドを参照して下さい。

M4CE の Migrate Connector は、移行元 VM を管理する vCenter Server 毎に展開が必要です。Google Cloud 側の1つの Project に対して複数の Migrate Connector を紐付けて利用することができます。また、移行先となる Compute Engine インスタンスが紐づく Project は、Migrate Connector を紐付けた Project (=ホストプロジェクト)自身でも、異なる Project (=ターゲットプロジェクト)でも可能です。なお、ターゲットプロジェクトの構成は必須ではありません。

■ 4. M4CE v5.0 がサポートする vSphere 環境および OS 種別とその他要件

M4CE を用いた移行を行うためには、移行元 VM にインストールされた OS がサポート対象であることが必要となります。主な Windows 及び Linux に対応していますが、M4CE v5.0 による移行がサポートされる OS 及びライセンス等の詳細についてはこちらを参照下さい。

移行元となる VM が稼働する vCenter Server および ESXi ホストのバージョンについては、5.5 以降がサポートされています。その他、M4CE v5.0 使用に際して必要となる要件についてはこちらを参照して下さい。

■ 5. Migrate Connector のインストール事前準備

Migrate Connector のインストール手順の詳細はこちらのページを参照して下さい。概略としては、以下の手順となります。

  1. Migrate Connector で利用する vCenter ユーザーの作成とロールの割当
    ※GCVE の場合は、ソリューションユーザーを使用します。ソリューションユーザーは必要となる権限は基本的に保持していますが、必要に応じて確認と構成を行って下さい。
  2. RSAを用いたSSH公開鍵/秘密鍵ペアの作成(ssh-keygen や Putty key generatorなどで生成する)
    ※特に鍵長に指定はありませんが、4096等で作成ください。
  3. Google Cloud アカウントの構成
    3a. Migrate Connector が使用するサービスアカウント ※Migrate Connector 構成時に新規作成させることも可能
    3b. Migrate Connector の登録に利用するユーザアカウント ※登録時のみ使用
  4. Migrate Connector を紐付けるリージョンの確認
    ※Migrate Connector を紐付けることができるリージョンは Google Cloud の全リージョンではありません。こちらを確認して下さい。
  5. 必要となるネットワーク接続の確認・構成
    5a. Migrate Connector → vCenter Server : 443/tcp, 902/tcp
    5b. Migrate Connector → ESXi : 902/tcp
    5c. Migrate Connector → DNS Server : 53/tcp, 53/udp
    5d. Migrate Connector → Google Cloud (*.googleapis.com, gcr.io) : 443/tcp

M4CE v5.0 利用に際して必要となるロールおよび権限の詳細については、こちらを参照して下さい。

■ 6. Migrate Connector のインストール

Migrate Connector 仮想アプライアンスはこちらからダウンロード頂けます(※2021/12時点の最新版のため上記URLは更新されている場合があります。また、Internet に接続された環境であれば、直接 URL を指定してOVAを展開頂くことも可能です)。

移行元 vSphere 環境に OVA をインポート・デプロイする
Migrate Connector は公開された Cloud Storage に保存されているためURL指定が可能
ストレージ領域としては 30GB が必要です
テンプレートのカスタマイズにおいて事前準備で作成した公開鍵などの情報を指定します

テンプレートのカスタマイズにおいて指定する項目は以下のとおりです。

  • SSH 公開鍵(ssh-rsa から始まる全文字列を貼り付けて下さい)
    ※Migrate Connector のログインに利用可能なアカウントは admin に固定されています。
  • Hostname
  • IP Address ※vCenter Server 及び ESXi ホストと疎通可能であること
  • Netmask
  • Default Gateway
  • DNS
  • HTTP Proxy(省略可)※認証付きProxyは指定できません
  • Static network route(省略可)

■ 7. Migrate Connector の初期構成とレポート

Migrate Connector アプライアンスを展開したらパワーオンし、しばらく待ってから、アプライアンス展開時に設定したSSH公開鍵に紐づく秘密鍵を使用して admin アカウントでSSH接続して初期構成を実施します。

Migrate Connector に対して admin アカウントと秘密鍵を用いて SSH 接続した例

初期構成の詳細手順としてはこちらのページを参照して下さい。概略としては、m4c register コマンドを用いて以下の項目を構成します。

  1. [Please enter vCenter host address:]で vCenter Server の IP アドレスを指定します ※ Migrate Connector アプライアンスから Ping 疎通が可能であることを確認して下さい
  2. vCenter Server の SSL 証明書サムネイル(Fingerprint)を承諾します
  3. [Please enter vCenter account name to be used by this appliance:]にMigrate Connector が vCenter Server への接続に使用するユーザアカウントを入力し、[Please enter vCenter account password:]にパスワードを指定します
  4. Google Cloud への Migrate Connector の登録に使用する Google Cloud ユーザアカウントを指定します
  5. [Please visit this URL to authorize this application:]に表示されたURLをブラウザに貼り付け、4. で指定したユーザアカウントに対する OAuth 接続コードを取得し[Enter the authorization code:]にコピー&ペーストします
  6. [Please select project:]で Migrate Connector を紐付ける Project を指定します
    ※多数の Project がアカウントに紐付いている場合は、紐付けたい Project 名を入力します
  7. [Please select region:]で Migrate Connector を紐付けるリージョンを指定します
  8. [Please supply new vSphere source name] で Google Cloud に登録する Source Name を指定します
    ※複数の Migrate Connector を1つの Project に紐付ける場合、この Source Name を用いて Migrate Connector を識別します
  9. [Please select service account: (“new” to create)]で Migrate Connector が Google Cloud への接続に使用するサービスアカウントを指定もしくは新規に作成します(このサービスアカウントに対して、自動的に必要なロールが適用されます)
  10. 9. で “new” とした場合には [Please supply new service account name…]で作成するサービスアカウント名の @ より前となる部分を指定します。

以下が実行時のサンプルです。
※一部値をダミー値に変更および中略しています。

admin@migrate-connector:~$ m4c register
Please enter vCenter host address: 192.168.100.51
vCenter server SSL certificate fingerprint is c7777(snip)ec1. Do you approve? [Y/n]Y
Please enter vCenter account name to be used by this appliance: m4ce@demo.local
Please enter vCenter account password:
vSphere credentials verified
Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=(snip)&prompt=consent&access_type=offline
Enter the authorization code: 4/(snip)tuy4
Please select project:
1. aaaa
2. bbbb
3. cccc
List is longer than 10, truncating list. Please select or type project.
sample-project-name
Please select region:
1. asia-east1
2. asia-northeast1
3. asia-south1
4. asia-southeast1
5. australia-southeast1
6. europe-north1
7. europe-west1
8. europe-west2
9. europe-west3
10. europe-west4
List is longer than 10, truncating list. Please select or type region.
asia-northeast1
No source was found
Please supply new vSphere source name (vSphere source format must be only lowercase letters, digits, and hyphens and have a length between 6 and 63): vcenter-1
Creating new source...
Please select service account: ("new" to create)
1. new
2. aaa@aaa.sample
List is longer than 10, truncating list. Please select or type service account.
new
Please supply new service account name (service account format must be only lowercase letters, digits, and hyphens and have a length between 6 and 30): m4ce-vcenter1
Waiting for the Migrate Connector to become active. This may take several minutes...
Registration completed
admin@migrate-connector:~$

構成が完了したら、m4c status コマンドで状態を確認し、Cloud Console の Migrate for Compute Engine 管理画面において ‘ソース’ に Source Name
が登録され、Migrate Connector と連携した vSphere 環境の VM リストが Cloud Console に表示されることを確認して下さい。

[ソース] に表示される Migrate Connector の識別表示

以下が m4c register による構成後 の m4c status コマンドの実行例です。

admin@migrate-connector:~$ m4c statusAppliance connectivity and health:
Migrate Connector appliance health: Healthy
Cloud APIs network connection: Reachable
Proxy setting: not enabled
Appliance version: 2.0.1663
VM Migration service:
Registered with VM Migration service: True
Connectivity to VM Migration service: True
Project: sample-project-name
Location: asia-northeast1
Source name: m4ce-vcenter1
Data center connector name: vcenter-1-abcdefg
Migrate Connector service account: sample@project-name.iam.gserviceaccount.com
On-Prem environment:
vCenter address: 192.168.100.51
vSphere user name is: m4ce@demo.local
admin@migrate-connector:~$

■ 8. Migrate Connector による VMware VM の Compute Engine への移行

正直なところ、ここまで来てしまえば VM 観点としては後はひたすら移行作業を進めるのみです。どちらかというと、VM としての移行そのものよりも、IPアドレスなどが変更されることに伴うアプリケーション側への対処の方に時間を使うことになるかと思います。残念ながら、2021年12月時点では Compute Engine への VM 移行においては、“Subnet ごと” 移行する方法以外で、オンプレミスや VMware Engine 等の環境から VM 移行する際に IP アドレスを変更しない移行はできません。以下と合わせて、移行の流れの詳細についてはこちらを参照して下さい。

M4CE を用いた移行では、VM 単位とグループ単位の2つの単位で移行を行うことができます。VM 単位で移行を行う流れとしては、以下の手順およびガイドとしてはこちらを参照して下さい。

  1. オンボーディング(移行対象とするVMを選択します)
移行する VM を選択し [移行の追加]をクリックする

2. レプリケーション(移行対象とするVMのストレージイメージを Google Cloud に複製します:初回はフル、2回目以降は増分)

レプリケーションを開始

3. VM ターゲットの詳細設定(インスタンスタイプや各種構成の指定)

移行。の詳細

4. テストクローン(最新レプリケーションデータを元にクローンを作成し、実際に Compte Engine において実行・テストする)
※テストクローンによる動作確認の実施は必須ではないが推奨

テストクローン

5. カットオーバー(移行元 VM の停止、最終レプリケーションの実行、レプリケーションデータからのインスタンス生成と実行)

カットオーバー

6. ファイナライズ(最終的なクリーンアップの実施): 最終処理

レプリケーションを最終処理

M4CE v5.0 では、グループ単位での移行もサポートしています。グループ単位での移行について、ガイドとしてはこちらを参照して下さい。

グループ

VM 単位の場合と異なる点は、移行元 VM を紐付けるグループを指定する手順が加わることのみです。なお、1つの VM を複数のグループに紐付けることはできません。グループを構成した場合でも、グループ単位でまとめて扱うことができるようになるのみで、移行の流れや可能な操作に違いはありません(レプリケーションのタイミングも VM 毎に異なりますが、カットオーバー時には同時にシャットダウンされ最終レプリケーションが実行されます)。

グループ:カットオーバー

なお、Migrate for Compute Engine では、対象 VM についてレポートを作成し、vCPUやメモリについての割当・平均使用率・最大使用率や、ディスクI/Oとネットワークについての平均値や最大値などを週・月・年単位の情報に基づいて確認できます。

レポートの作成
レポートの作成:パラメータ指定
レポートを表示

■ 9. レプリケーションについて

レプリケーション実行時には、Migrate Connector によって vCenter サーバを通じて対象 VM の Snapshot が取得されます。この Snapshot は、各レプリケーションサイクル終了時に自動的に削除されます。

レプリケーション実行時に作成される スナップショット

レプリケーションは初回はフルレプリケーションとなりますが、2回目以降は CBT (Change Block Tracking) 機能を用いた変更ブロックトラッキングに基づく増分レプリケーションとなります。また、レプリケーションの実行は一時停止と再開が可能です(たとえば、大量のデータ更新を行う場合などにはレプリケーションを一時停止することを推奨します)。

レプリケーションの再開

注意事項としては、レプリケーションを構成後に移行元 VM の仮想ディスク構成を変更(仮想ディスクの追加等)すると、レプリケーションが失敗してしまいます。仮想ディスク構成を変更する場合には、一旦移行の指定を削除して再度登録を行って下さい(再度フルレプリケーションから開始することになります)。

レプリケーション構成後に仮想ディスク数を変更した場合のエラー例

また、M4CE を用いることで、こちらのページに記載されているような Compute Engine における VM として利用するために必要な各種処理を各レプリケーションサイクル完了時に自動的に適用してくれるメリットがあります。この自動化は M4CE をご利用頂くことの最大のメリットと言えるかもしれません。VMware Tools のアンインストールや必要なモジュール・エージェントなどの導入、OS ライセンスの構成など、移行後に必ず必要となる一通りの構成を全て自動的に処理してくれます。

なお、M4CE v5.0 の場合、レプリケーションされたデータは Cloud Storage に保存され課金されますが、Google Cloud 管理の Project に紐付いて管理されるため、ファイルそのものを直接確認したり操作することはできません。また、レプリケーションサイクルを管理するために Snapshot も作成されます。これらのファイルは、ファイナライズ処理を実行することで全て削除され、課金されなくなります。

■ 10. VMターゲットの詳細設定について

VM 移行に際しての詳細設定としては、以下の項目を指定します。この設定パラメータはレプリケーション開始後を含め、随時変更することが可能です。

  • 全般(インスタンス名、プロジェクト、ゾーン)
全般(必須)
  • マシン構成(マシンタイプシリーズ、マシンタイプ)
マシン構成(必須)
  • ネットワークインターフェイス(ネットワーク、サブネット、外部IP、内部IP)
ネットワークインターフェイス(必須)
  • 追加の構成(省略可)
    ・ネットワークタグ
    ・ディスクタイプ
    ・ライセンスの種類
    ・サービスアカウント
    ・ホストメンテナンス時動作
    ・自動再起動
    ・ラベル
追加の構成(省略可)
  • 単一テナンシーに関するノードアフィニティラベル、最小 vCPU 数
単一テナンシー
  • メタデータ
メタデータ
  • レプリケーション間隔(既定値:7200秒 = 2時間おき)
レプリケーションポリシー

■ 11. テストクローンについて

テストクローンの作成は、移行元 VM の稼働に対して一切影響を与えること無く稼働させたままで実施することができますが、必要に応じてネットワークを隔離するなどの対応は行って下さい。テストクローンによって Compute Engine 側に VM が作成されている状態でも、レプリケーション処理は問題なく継続されます。なお、テストクローンによって作成されるインスタンスと、カットオーバーによって作成されるインスタンスは同じ名前になるため、テストクローンによって作成されたインスタンスは動作確認などによる使用が終了した後に削除することを推奨します。

テストクローンの作成
テストクローンによって作成された Compute Engine インスタンス

■ 12. カットオーバーについて

カットオーバーを実行すると、移行元 VM は停止されます。つまり、このタイミングでは移行元 VM によるサービスに影響が発生するため、必ずメンテナンスウィンドウ内でカットオーバーを開始して下さい。移行元 VM が停止された後にスナップショットが作成され、最後のレプリケーション処理が行われた上で、そのレプリケーションデータを元に Compute Engine インスタンスが生成されます。

2台の VM が含まれるグループを対象にカットオーバーした場合の動作例(ログなので下から順)

■ 13. ファイナライズについて

カットオーバーによって作成された VM に問題がないことが確認されたら、ファイナライズを行う必要があります。

ファイナライズ(最終処理済み)した例

これにより、レプリケーションのために生成されたストレージデータ等が削除され、当該 VM の移行のために M4CE が使用していたリソース全てが削除され課金が終了します。ファイナライズを行わないと課金が継続しますのでご注意下さい。

カットオーバーを実行してもファイナライズを実行していなければ、再度レプリケーションを有効化して増分レプリケーションを継続することが可能です。ファイナライズは必ず移行したインスタンスに問題がなく、レプリケーションデータを全て削除してよい状況であることを確認した上で実施してください。

なお、移行元 VM については、カットオーバーおよび最終処理を実施しても停止されているのみで削除は行われません。

カットオーバー後の移行元 VM の状態例

また、Migrate for Compute Engine のソースにおいてもファイナライズを行った対象の VM は表示されたままとなりますので、再度移行の構成を行うことも可能です。ただし、その場合は最初のフルレプリケーションからのやり直しとなります。

■ 14. まとめ

Migrate Connector の展開さえ済んでしまえば、思った以上に簡単に VMware vSphere 環境の VM を Google Cloud の Compute Engine インスタンスへ移行できることがわかったかと思います。M4CEは、オンプレミスの VMware vSphere 環境からの移行にも、Google Cloud VMware Engine (GCVE) 環境からの移行にもどちらにもご利用いただけます。つまり、M4CE を用いることで、ひとまず全てのオンプレミスVMware環境を一旦 GCVE への移行頂いた後、必要に応じて VM 毎に GCE への移行を進めることで、インスタンスごとに最適な稼働環境としていくことも可能です。

M4CE v5.0 は、以前のバージョンと比較して、移行にVPN接続を必要としなくなったり、レプリケーションによるデータの増分転送に対応したことで移行に伴う停止時間を最小化できるなど、多くのメリットがあります。クラウドへのインスタンスの移行の方法には様々なパターンがありますが、その1つの手段として、M4CE を使った Google Cloud Compute Engine への移行を是非ご検討下さい!

--

--

Takao Setaka
google-cloud-jp

Customer Engineer (Infrastructure Modernization) @GoogleCloud. All of my opinions are my own.