Amazon Q DeveloperのVMwareワークロード変換機能を利用してEC2の移行ウェーブ作成とオンプレミスネットワーク移行を検証してみた
こんにちは、AWS事業本部 コンサルティング部の荒平(@eiraces)です。
Amazon Q Developer transform for VMwareが、2024年のre:Inventにて発表されました。
非常に面白い機能なので、ご紹介したいと思います。
発表時の記事はこちら↓
大筋の手順は以下のドキュメントにまとまっていますが、少し分かりにくいポイントもあるので、解説しながら進めます。
前提条件
この機能を利用するには、数点の前提条件があります。
- サポートOSはAWS Application Migration Service(AWS MGN)と同様
- バージニア北部(※)のIAM Identity Centerに利用するユーザーを登録すること
- 上記ユーザーにおいて、Amazon Q Developer Pro Tierをサブスクライブしていること
※ Amazon Q Developerの対応状況により、利用リージョンは変わる可能性があります。
Amazon Q DeveloperとIAM Identity Centerのリージョンは同一である必要があるようです。私は東京リージョンにIdCを作成していましたが、エラーが出て進めなかったので作り直しました。
事前準備
Amazon QとIAM Identity Centerの接続が必要です。
Connect to IAM Identity Centerのボタンをクリックすると、IAM Identity Centerが接続された状態になります。
Getting Startedの画面右下にAmazon Q Developer Pro
のサブスクライブボタンがあるので、これをクリックします。
Assign users and groups
では、Amazon Q DeveloperのPro Tierを付与したいユーザーを検索してアサインします。
Amazon Q Developerがユーザーに割り当てられると、QDefaultProfile
のアプリケーション画面から、IAM Identity Center側でもユーザーとグループを確認することができます。
Amazon Q Developerの設定画面から、Amazon Q Developer: Transform settings
を有効にします。
有効になると、アプリケーションURLが発行されるのでこれにアクセスします。
AWS Appsのログイン画面が出てくるので、IAM Identity Centerに登録したユーザーでログインします。
Amazon Q Developer: Transformの画面になりました。
Amazon Q Developer Transform for VMware Workloadを試してみる
早速ですが、Ask Q to create a job
からどのTransformationジョブを作成するか問われます。
ここでは 2
をチャットしてみます。
ジョブのタイプ、目的、ジョブ名をサジェストしてくれるので、yes
とタイプし次に進むと、「Create job」というボタンが出現しました。これをクリックしてみます。
ジョブが作成されました!ダッシュボードはこの時点では何も表示されないようです。
画像では分かりにくいのですが、Connect AWS account for on-premises discovery data
のアイコンがぴょんぴょん跳ねています。
Create or select connectors
のタスクをクリックすると、利用するAWSアカウントの入力を求められるので、アカウントIDを入力し、検証リンクを受け取ります。
検証リンクを開き、新規Connectorを許可するために Approve
をクリックします。
Amazon Q Developerの画面でApprovedのステータスに変化するので、「Send to Q」をクリックします。
この段階でDiscovery Serviceなどにオンプレミスデータが溜まっていればそれらを利用できますが、私の検証用アカウントにはオンプレミスデータがないため、Migration Hubに手動で仮想マシンデータをインポートして「仮想マシンがあるテイ」で進めます。
RVToolsにてオンプレミスデータを収集できる場合は Upload Zip file
からアップロードしてください。
なお、仮想マシンデータのMigration Hubインポートについては、サンプルファイルを改変して、以下のようにしました。
ExternalId,SMBiosId,IPAddress,MACAddress,HostName,VMware.MoRefId,VMware.VCenterId,CPU.NumberOfProcessors,CPU.NumberOfCores,CPU.NumberOfLogicalCores,OS.Name,OS.Version,VMware.VMName,RAM.TotalSizeInMB,RAM.UsedSizeInMB.Avg,RAM.UsedSizeInMB.Max,CPU.UsagePct.Avg,CPU.UsagePct.Max,DiskReadsPerSecondInKB.Avg,DiskWritesPerSecondInKB.Avg,DiskReadsPerSecondInKB.Max,DiskWritesPerSecondInKB.Max,DiskReadOpsPerSecond.Avg,DiskWriteOpsPerSecond.Avg,DiskReadOpsPerSecond.Max,DiskWriteOpsPerSecond.Max,NetworkReadsPerSecondInKB.Avg,NetworkWritesPerSecondInKB.Avg,NetworkReadsPerSecondInKB.Max,NetworkWritesPerSecondInKB.Max,Applications,Tags
APP01-ID,4c4c4544-0047-4310-8043-b6c04f504633,"192.168.1.10",00:50:56:9A:00:01,app01.local,vm-01,vc-prod-01,2,4,4,Microsoft Windows Server 2019,10.0.17763,APP01,8192,4096,6144,45.5,82.3,150.45,48.32,980.65,142.87,2.45,685.32,10.56,890.43,18.65,22.43,98.76,180.54,"IIS, .NET Core","Environment:Production, Service:Web, Tier:Frontend"
DB01-ID,4c4c4544-0047-4310-8043-b6c04f504634,"192.168.2.20",00:50:56:9A:00:02,db01.local,vm-02,vc-prod-01,4,8,8,Microsoft Windows Server 2019,10.0.17763,DB01,16384,12288,14336,65.8,95.4,320.87,180.54,1450.76,485.32,4.87,920.54,15.87,1240.65,25.43,32.76,145.87,280.43,"SQL Server 2019, SSMS","Environment:Production, Service:Database, Tier:Backend"
APP02-ID,4c4c4544-0047-4310-8043-b6c04f504635,"192.168.1.11",00:50:56:9A:00:03,app02.local,vm-03,vc-prod-01,2,4,4,Microsoft Windows Server 2019,10.0.17763,APP02,8192,3584,5120,42.3,78.5,145.32,45.76,920.43,138.54,2.32,645.87,9.87,850.32,17.54,21.32,95.43,175.87,"IIS, .NET Core","Environment:Production, Service:Web, Tier:Frontend"
MONITOR01-ID,4c4c4544-0047-4310-8043-b6c04f504636,"192.168.3.30",00:50:56:9A:00:04,monitor01.local,vm-04,vc-prod-01,2,4,4,Microsoft Windows Server 2019,10.0.17763,MONITOR01,8192,2048,4096,25.4,45.6,85.43,32.54,450.87,98.76,1.87,320.54,7.65,520.43,12.43,15.87,75.43,120.87,"Nagios, Grafana","Environment:Production, Service:Monitoring, Tier:Management"
DB02-ID,4c4c4544-0047-4310-8043-b6c04f504637,"192.168.2.21",00:50:56:9A:00:05,db02.local,vm-05,vc-prod-01,4,8,8,Microsoft Windows Server 2019,10.0.17763,DB02,16384,11264,13312,62.4,92.1,310.54,175.87,1380.43,465.87,4.54,890.32,14.87,1180.54,24.32,31.54,140.65,270.87,"SQL Server 2019, SSMS","Environment:Production, Service:Database, Tier:Backend"
サンプルファイルについては、Application Discovery Serviceの公式ドキュメントに転がっています。
Amazon Q Developerからインポートを失敗したものを削除する術がないと思っていたのですが、Migration Hubから削除することができました。(以下の画像の上3つ)
移行対象の仮想マシン読み込みが終わると、ウェーブのレビューが必要になります。
ウェーブとは、仮想マシン移行におけるグルーピングのことで、同じシステムに属する仮想マシン数台をまとめて移行する場合に優先度をつけることが可能です。
Amazon Q Developerが仮想マシンデータを組み込んだテンプレートを提示してくれるので、これをダウンロードします。
ダウンロードしたファイルの中身(CSV)です。
ネットワーク接続に関するコメントがありますがこれは一旦無視します。
ExternalId,ServerId,HostName,VMware.MoRefId,VMware.VCenterId,VMware.Vmname,Applications,ApplicationWave,Remarks
DB02-ID,d-server-02zlhz8vwr0wi7,db02.local,vm-05,vc-prod-01,DB02,,,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
APP01-ID,d-server-01zaz4gapx690b,app01.local,vm-01,vc-prod-01,APP01,,,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
DB01-ID,d-server-018fwuvfv6mese,db01.local,vm-02,vc-prod-01,DB01,,,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
MONITOR01-ID,d-server-032h8fx8p2iwaa,monitor01.local,vm-04,vc-prod-01,MONITOR01,,,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
APP02-ID,d-server-01qgwxs1fe1xaz,app02.local,vm-03,vc-prod-01,APP02,,,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
Applications
とApplicationWave
に追記してアップロードしてみます。
ExternalId,ServerId,HostName,VMware.MoRefId,VMware.VCenterId,VMware.Vmname,Applications,ApplicationWave,Remarks
DB02-ID,d-server-02zlhz8vwr0wi7,db02.local,vm-05,vc-prod-01,DB02,apps01,wave-1,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
APP01-ID,d-server-01zaz4gapx690b,app01.local,vm-01,vc-prod-01,APP01,apps02,wave-1,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
DB01-ID,d-server-018fwuvfv6mese,db01.local,vm-02,vc-prod-01,DB01,apps03,wave-1,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
MONITOR01-ID,d-server-032h8fx8p2iwaa,monitor01.local,vm-04,vc-prod-01,MONITOR01,apps04,wave-2,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
APP02-ID,d-server-01qgwxs1fe1xaz,app02.local,vm-03,vc-prod-01,APP02,apps05,wave-2,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
アップロードすると検証が走ります。特に問題がなければ、Success!と表示されます。
テキストだと少し見づらいので、CSVの画像です。
上記CSVに記載したアプリケーション名・Wave IDがMigration Hub側にも反映されていることが分かります。
続いて、移行先のAWSアカウントに接続します。
Create or select connectors
から、AWS account IDを入力のうえ「Create connector」をクリックします。
例のごとく検証リンクが発行されるので、これをクリックして「Approve」をします。接続できれば「Send to Q」を実行。
RVToolsからエクスポートしたCSVデータをzipにして、アップロードを行います。
インポートしたデータはMigration Hubのデータコレクタ画面で見れるほか、インポート時のエラーも確認できます。(Amazon Q Developerの画面では詳しく教えてくれませんでした…)
いよいよ移行も大詰めです。オンプレミスデータに合わせたVPCネットワークをAmazon Qが自動で構築してくれます。「Use Q to deploy the VPCs」をクリックし、「Send to Q」をします。
なお、この段階で各種クォータ(VPCやElastic IPの数上限)に引っかからないかは事前確認が必要です。
Amazon Q が裏でAWS CloudFormation テンプレートとAWS CDK テンプレートをデプロイします。
EIPの上限に引っかかると、画像のようにしっかり教えてくれます。
VPCネットワークが作成されました!分かりやすくタグも振られています。
オンプレミスネットワークの形に合わせ、以下のものが自動生成されます。(ドキュメント参照)
- VPC
- サブネット
- セキュリティグループ
- ネットワークアクセスコントロールリスト (NACL)
- NAT ゲートウェイ
- トランジットゲートウェイ
- インターネットゲートウェイ
- Elastic IP
- ルート
- ルートテーブル
ちなみに自分でカスタマイズをしたい場合は、CloudFormationやCDKのテンプレートがダウンロードできます。
AWS Application Migration Service (AWS MGN)の初期設定を行います。サービスのオプトインを行い、「Send to Q」をクリックします。
筆者環境では既にMGNのオプトインをしていたため、もしかすると表示が変わるかもしれません。
最後に、ウェーブごとにサーバ移行計画を作成します。
選択式の項目から、サイジングやテナンシー、インスタンスタイプを指示します。
サイジングに関して、最大の使用率を取るか、平均を取るかなどの指示が可能です。
Amazon Q Developerが作成したMigration planはダウンロード可能です。
今回の検証では、以下のようなCSVが吐き出されました。
mgn:account-id,mgn:region,mgn:app:name,mgn:app:description,mgn:wave:name,mgn:server:user-provided-id,mgn:server:tag:vmuuid,mgn:server:fqdn-for-action-framework,mgn:server:platform,mgn:launch:instance-type,mgn:launch:placement:tenancy,launch:instance-type:recommendation-remarks,mgn:server:tag:vmmoref,mgn:server:tag:vcenteruuid,mgn:server:tag:vcentername,mgn:server:tag:vmname,mgn:server:tag:hostname,mgn:launch:nic:0:private-ip:0,mgn:server:tag:QTransformJobId-d4bc774a-5364-41d6-9c38-6273d4aa02fc,mgn:server:tag:Tier,mgn:server:tag:Environment,mgn:server:tag:Service
"",us-east-1,apps03,,wave-1,db01.local__d-server-018fwuvfv6mese,,192.168.2.20,Windows,c7i-flex.2xlarge,default,,vm-02,vc-prod-01,,DB01,db01.local,192.168.2.20,Imported,Backend,Production,Database
"",us-east-1,apps02,,wave-1,app01.local__d-server-01zaz4gapx690b,,192.168.1.10,Windows,t3a.xlarge,default,,vm-01,vc-prod-01,,APP01,app01.local,192.168.1.10,Imported,Frontend,Production,Web
"",us-east-1,apps01,,wave-1,db02.local__d-server-02zlhz8vwr0wi7,,192.168.2.21,Windows,c7i-flex.2xlarge,default,,vm-05,vc-prod-01,,DB02,db02.local,192.168.2.21,Imported,Backend,Production,Database
c7i-flex.2xlarge
は最近のインスタンスですが、積極的に勧めてくれるのは嬉しいですね。
この段階でスペックの変更をする場合は、手動で訂正してアップロードします。
最後のSend to Qを終えると、サーバーの移行を促す画面になります。それぞれのサーバーに対してReplication Agentを入れるか、MGN Connectorを利用します。
MGN側でもウェーブが設定され、それぞれの仮想マシンの移行状況が把握できるようになっていました。
おわりに
Migration HubやMGNにてウェーブ管理をするのはなかなか面倒なのですが、初期設定からAmazon Q Developerが肩代わりしてくれるのでユーザー体験は良さそうです。
目玉機能が Network Migration
ですが、AWS用のネットワーク設計の手間が省ける、といった点で嬉しい方も多いのではないかと思います。
Quotaは十中八九引っかかる気がするので、Amazon Qが自動で引き上げてくれたら嬉しいのに…と思いつつ、便利であることには変わりないので、是非使ってみてください!
このエントリが誰かの助けになれば幸いです。
それでは、AWS事業本部 コンサルティング部の荒平がお送りしました!
参考