Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを AWS Graviton ベースのインスタンスタイプに移行したいです。
簡単な説明
AWS Graviton ベースのインスタンスに移行するには、次の手順を実行します。
- アプリケーションのソースコードおよびライブラリと、AWS Graviton ベースのインスタンスとの互換性を確認します。
- オンライン方式またはオフライン方式でデータを新しいインスタンスにコピーします。
詳細な移行戦略については、「AWS Graviton Fast Start」を参照してください。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
アプリケーションのソースコードとライブラリの互換性を確認する
現在のワークロード要件を分析し、AWS Graviton ベースのインスタンスで要件がサポートされるかどうかを判断します。
アプリケーションのソースコードとアプリケーションの互換性を確認するには、GitHub のウェブサイトにある Porting Advisor for Graviton を使用します。
現在のインスタンスタイプと同じプロセッサアーキテクチャを使用するインスタンスタイプを選択します。ARM64 以外のプロセッサアーキテクチャを使用するインスタンスは、その場でアップグレードすることはできません。Amazon マシンイメージ (AMI) は、プロセッサのアーキテクチャに固有のものです。
新しいインスタンスにデータをコピーする
オンライン方式
Porting Advisor for Graviton から、ソフトウェアの移行方法に関するガイダンスを取得できます。ただし、移行したソフトウェアが Graviton インスタンス上で動作することを確認するためにテストを実行する必要があります。コードの移行後、データを新しい Graviton インスタンスに手動でコピーする必要があります。
ARM64 ベースの AMI で作成された AWS Graviton ベースのインスタンスには、ARM64 ベースの Amazon Elastic Block Store (Amazon EBS) ルートボリュームが必要です。このルートボリュームは、起動時に自動的に生成できます。
インスタンスがファイルシステムタイプをサポートしている場合、x86_64 アーキテクチャでビルドされたボリュームまたは、かかるアーキテクチャを使用するボリュームであっても、セカンダリボリュームとしてマウントできます。現在のインスタンスのルートボリュームをセカンダリボリュームとしてアタッチしてマウントした後、データを Graviton のルートボリュームにコピーします。現在のインスタンスのセカンダリボリュームを Graviton ベースのインスタンスにアタッチすることができます。
重要: 次のステップを完了する前に、ボリュームのスナップショットを取得することがベストプラクティスです。
データをインスタンスにコピーするには、次の手順を実行します。
- ARM64 ベースのインスタンスを起動します。
- 必要なパッケージとアプリケーションの依存関係をインストールします。
- 新しいインスタンスを、ソース (x86) インスタンスと同じように設定します。アプリケーションをスムーズに実行するには、新しいインスタンスをソースインスタンスと同じ設定にする必要があります。
- x86 インスタンスから Graviton インスタンスにデータを移行し、アプリケーションデータを新しいインスタンスに同期するには、次のコマンドを実行します。
sudo rsync -avR -e "ssh -i key.pem" /source_path/AppData ec2-user@ec2_dns_name.amazonaws.com:/destination_path
-a, --archive archive mode
-R, --relative use relative path names
-v, --verbose increase verbosity
注: このステップでは、オペレーティングシステム (OS) ファイルとバイナリを同期しないでください。上記のコマンドは、ローカルソースディレクトリのファイルと同じ名前のリモート宛先ディレクトリにある既存のファイルを上書きします。--update または -u フラグを使用すると、既存のファイルをリモート宛先ディレクトリに残し、新しいファイルまたは変更したファイルのみを転送することができます。
- アプリケーションを起動し、動作が想定通りであることを確認します。
オフライン方式
注: 新しい Graviton ベースのインスタンスに、必要なバイナリと依存関係をインストールする必要があります。
データをインスタンスにコピーするには、次の手順を実行します。
-
x86 ベースのインスタンスを停止します。
-
同じアベイラビリティーゾーン内の ARM64 ベースの AMI から新しいインスタンスを起動します。
-
x86 ベースのインスタンスのルートボリュームを、ARM64 ベースのインスタンスにセカンダリデバイス (/dev/sdf) としてアタッチします。
使用可能な ARM64 ベースの AMI のリストを表示するには、AWS CLI コマンド describe-images を次のように実行します。
$ aws ec2 describe-images --owners self amazon --filters "Name=architecture,Values=arm64" --query 'Images[*].[Name]' --output text
-
SSH を使用して ARM64 ベースのインスタンスに接続します。
-
次のコマンドを実行し、x86 インスタンスのルートボリュームをマウントします。
sudo mount /dev/vol_label /mnt
注: vol_label は、実際のデバイス名に置き換えます。必要に応じて、lsblk コマンドを実行してデバイス名を取得します。
-
セカンダリボリュームと ARM64 ベースのインスタンスのルートボリューム間でデータをコピーします。データをコピーするには、rsync などのディスク管理ツールまたは移行ツールを使用します。例:
sudo rsync -avR /source_path /destination_path
注: rsync の詳細については、die.net のウェブサイトで rsync(1) - Linux man ページを参照してください。
-
セカンダリボリュームをアンマウントするには、次のコマンドを実行します。
sudo umount /mnt
-
インスタンスからセカンダリボリュームをデタッチします。
関連情報
Graviton の始め方
Graviton ベースのインスタンスで使用できるオペレーティングシステム (GitHub のウェブサイト)