はじめに
こんにちは、KUDs です。
今回の記事では、AWS EC2 Linux のインスタンスタイプを変更について、注意点とその確認方法、および実際の変更手順について解説します。
本記事では実際にインスタンスタイプを t2.micro から t3.micro へ変更します。
t2.micro は AWS 無料利用枠の対象なので、利用開始から 12 ヶ月経過後に t3.micro への変更を考える人も多いのではないでしょうか。
このような方にも参考になるかと思います。是非是非ご参照ください。
EC2 ではインスタンスタイプ変更時にいくつかの注意点があります。
これらをクリアせずにインスタンスタイプを変更しないでください。
最悪、インスタンスが起動しなくなる場合があります。
この記事では、絶対に確認すべき点と、とっても簡単な確認方法を解説します。
ちなみに、タイトルでは「t2 から t3」と記載しました。
しかし、厳密には「Xen から Nitro」にする時の注意点と言えます。
つまり、「m4 から m5」や「c4 から c5」への変更にも適用できるものです。
Nitro についての詳細は本記事では割愛します。
該当するインスタンスタイプ及び詳細は以下の公式ドキュメントをご参照ください。
前提
EC2 インスタンスタイプを変更するにあたり、メモリや CPU 、アーキテクチャの確認は必須です。
(というか、それらを変えたいからインスタンスタイプを変更するという認識です)
今回の記事では、これらスペックの確認は前提として実施済みであるものとして進めます。
まだインスタンスタイプのスペックを確認していない人は、要件整理してどのインスタンスタイプにするかを決めるところから始めてください。
注意すべきこと
Xen から Nitro に変更するとき、以下のような要因でインスタンスタイプが起動できなくなる可能性があります。
- Elastic Network Adapter (ENA) の enaSupport 属性がインスタンスに対して無効になっている。
- ENA モジュールがインスタンスにインストールされていない
- NVMe モジュールがインスタンスにインストールされていない
または NVMe モジュールがインストールされているのにインスタンスの initramfs イメージにロードされていない - 起動時にデバイス名を使用して「/etc/fstab」ファイルにファイルシステムをマウントしようとしている
公式の資料としては以下の re:Post 記事が参考になります。
これらの要因に該当しないかを事前にチェックしておくことが必須です。
事前の確認項目を実際にチェックする
では実際に確認してみましょう。
ENA サポートの確認
以下の AWS CLI で簡単にチェックできます。
aws ec2 describe-instances --instance-id <インスタンス ID> --query "Reservations[].Instances[].EnaSupport"
以下は実際の出力例です。
[kuds@local-pc ~]
$ aws ec2 describe-instances --instance-id <インスタンス ID> --query "Reservations[].Instances[].EnaSupport"
[
true
]
サポートされている場合は true が返されます。
NVMe, ENA モジュール、fstab の確認
以下の項目は、一括で確認可能です。
- NVMe モジュールの確認
- ENA モジュールの確認
- fstab の確認
上記を一括で実施できるスクリプトは NitroInstanceChecks です。
以下 GitHub で公開されています。
上記のスクリプトを実行することで、一括で簡単にチェックできます。
具体的には、インスタンスに SSH 接続して以下の手順でスクリプトを実行しましょう。
curl -o nitro_check_script.sh https://raw.githubusercontent.com/awslabs/aws-support-tools/master/EC2/NitroInstanceChecks/nitro_check_script.sh
chmod +x nitro_check_script.sh
./nitro_check_script.sh
以下は実際の出力例です。
[root@wordpress /tmp]
# curl -o nitro_check_script.sh https://raw.githubusercontent.com/awslabs/aws-support-tools/master/EC2/NitroInstanceChecks/nitro_check_script.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 8128 100 8128 0 0 26112 0 --:--:-- --:--:-- --:--:-- 26135
[root@wordpress /tmp]
# ll nitro_check_script.sh
-rw-r--r-- 1 root root 8128 Jul 1 09:58 nitro_check_script.sh
[root@wordpress /tmp]
# chmod +x nitro_check_script.sh
[root@wordpress /tmp]
# ll nitro_check_script.sh
-rwxr-xr-x 1 root root 8128 Jul 1 09:58 nitro_check_script.sh
[root@wordpress /tmp]
# ./nitro_check_script.sh
------------------------------------------------
OK NVMe Module is installed and available on your instance
OK ENA Module with version 2.12.0g is installed and available on your instance
OK fstab file looks fine and does not contain any device names.
------------------------------------------------
上記のように、 3 項目全て OK が出ていることを確認しましょう。
インスタンスタイプを実際に変更する
問題なければ、いよいよインスタンスタイプを変更しましょう。
今回は t2.micro から t3.micro に変更します。
インスタンスタイプの変更を行う際にはインスタンスを停止する必要があります。
CLI で実施する手順は以下です。
# インスタンスを停止
$ aws ec2 stop-instances --instance-ids <インスタンス ID>
{
"StoppingInstances": [
{
"CurrentState": {
"Code": 64,
"Name": "stopping"
},
"InstanceId": "<インスタンス ID>",
"PreviousState": {
"Code": 16,
"Name": "running"
}
}
]
}
# インスタンスタイプを変更
$ aws ec2 modify-instance-attribute \
> --instance-type t3.micro \
> --instance-id <インスタンス ID>
# インスタンスを開始
$ aws ec2 start-instances --instance-ids <インスタンス ID>
{
"StartingInstances": [
{
"CurrentState": {
"Code": 0,
"Name": "pending"
},
"InstanceId": "<インスタンス ID>",
"PreviousState": {
"Code": 80,
"Name": "stopped"
}
}
]
}
補足: IncorrectInstanceState Error
補足ですが、インスタンスが停止中 (stopping) の時にインスタンスタイプを変更しようとすると IncorrectInstanceState エラーが出るので注意です。
[kuds@local-pc ~]
$ aws ec2 modify-instance-attribute \
> --instance-type t3.micro \
> --instance-id <インスタンス ID>
An error occurred (IncorrectInstanceState) when calling the ModifyInstanceAttribute operation: The instance '<インスタンス ID>' is not in the 'stopped' state.
メッセージの通り、 stopped ステータスである必要があります。
少し時間を空けてからインスタンスタイプを変更しましょう。
さいごに
今回、インスタンスタイプ変更前の確認項目と、実際の変更手順を確認しました。
確認項目を一括でチェックできる NitroInstanceChecks は非常に便利ですが、OS サポートは以下の通りです。
- Red Hat の派生製品: Red Hat Linux、Red Hat Enterprise Linux、CentOS
- Amazon Linux、Amazon Linux 2、および Amazon Linux 2023
- Debian の派生製品: Debian、Ubuntu
今回紹介した方法以外に、AWS Systems Manager Automation runbook 「AWSSupport-MigrateXenToNitroLinux 」 を利用するという手もあります。
詳細については以下をご参照ください。
以上です。
コメント