オンプレミスからのリホスト
オンプレミス環境の仮想マシンをAWSに移行する際、OSやアプリケーションなどをそのまま移行する「リホスト」という手法があります。リホストを自動化するサービスとしてAWSからApplication Migration Service(以下AWS MGN)とVM Import/Exportが提供されています。AWS MGNは自動的にレプリケーションがされて、カットオーバー処理を行うことでテスト、少ないダウンタイムで移行が可能となります。一方VM Import/Exportは一旦イメージファイルを取得してAWS環境にアップロードする方式のため、手動作業が多く長時間のダウンタイムが発生する可能性があります。今回の記事はAWS MGNを対象としています。
ツール | 特徴 |
---|---|
AWS MGN | 継続レプリケーション、カットオーバーによる切替 |
VM Import/Export | 手動作業が多い、ダウンタイムが発生しやすい |
エージェント版とエージェントレス版
AWS MGNは移行対象の仮想マシンにエージェントをインストールする方式とVMWare vSphere上に移行を中継する仮想マシンを作成する方式があります。後者は仮想マシンを用意する必要がありますが、移行対象の仮想マシンにエージェントをインストールする必要がありません。エージェント版はブロック単位の継続レプリケーションを行うため、カットオーバーにかかる時間が短縮出来るメリットがあります。エージェントレス版は仮想マシンのスナップショットを取得後、周期的な転送を行う仕組みのため、I/Oが多いシステムではレプリケーションに時間がかかる場合があります。
方式 | レプリケーション方式 |
---|---|
エージェント版 | ディスクブロック単位の継続レプリケーション |
エージェントレス版 | スナップショット単位の周期レプリケーション |
ネットワーク要件
AWS MGNのエージェント版を使用してオンプレミス環境の仮想マシンをAWS環境へのリホストを想定します。オンプレミス環境はインターネット接続出来ない閉域環境、AWS側もインターネット接続出来ない閉域環境とします。その際のネットワークの前提条件を確認します。
上記をまとめるとオンプレミス環境やレプリケーションサーバから必要な通信は下記になります。
No | 送信元 | 送信先 | ポート |
---|---|---|---|
① | ソースサーバ | レプリケーションサーバ | TCP1500 |
② | ソースサーバ | MGNのAPIエンドポイント | TCP443 |
③ | ソースサーバ | S3のAPIエンドポイント | TCP443 |
④ | レプリケーションサーバ | EC2のAPIエンドポイント | TCP443 |
⑤ | レプリケーションサーバ | MGNのAPIエンドポイント | TCP443 |
⑥ | レプリケーションサーバ | S3のAPIエンドポイント | TCP443 |
VPCエンドポイントを使用した内部通信
オンプレミスのソースサーバやステージングサブネットからMGN、EC2、S3など各種サービスのAPIエンドポイントへのアクセスが必要となります。そのため対応するサービスのVPCエンドポイントの作成が必要となります。
レプリケーションサーバからS3へのアクセスはゲートウェイエンドポイントの利用が可能です。一方、オンプレミスからS3へのアクセスはインターフェースエンドポイントを使用する必要があります。
名前解決
ソースサーバからVPCエンドポイントにアクセスする際、名前解決が必要となります。閉域環境ではグローバルな名前解決が出来ません。ソースサーバがオンプレミスのDNSサーバを参照している場合、条件:amazonaws.coms 転送先:DNS Inbound EndpointのIPアドレス
でDNSサーバにフォワーディング設定を行うことで名前解決が可能となります。
エージェントインストール時の指定
aws-replication-installer-init.py
でエージェントをインストールするとレプリケーションが開始されます。その際、--s3-endpoint
と--endpoint
でそれぞれ、S3のVPCエンドポイント、MGNのVPCエンドポイントを指定しないと閉域での通信になりません。
レプリケーションテンプレートの変更
レプリケーションサーバの動作を定義するレプリケーションテンプレートの設定を変更します。「プライベートIPを使用する」項目を有効にすることで「プライベート ネットワーク経由」の通信となります。
その他
オンプレミス側のファイアウォールのやOSのファイアウォールで必要なポートを開けます。AWS側でもネットワークACLやセキュリティグループ等で必要なポートを開けます。