KUSANAGIのEC2をt3インスタンスへ変更

AWSからEC2の新しいインスタンスタイプ(NITRO世代) t3 シリーズがリリースされました。

Amazon EC2 T3 インスタンス – 旧世代の料金に比べて最大 30% 削減のコストパフォーマンスを実現する、次世代の汎用バーストインスタンス

注:
以下の記事で開設する手順で全てのKUSANAGIインスタンスがt3インスタンスに変更できるわけではありませんでした(できない方が多かったです)。試される場合は、テスト用環境を用意してそちらで試してください。

参考 (Red Hat編)Nitro世代(C5、M5、T3)へのEC2インスタンスタイプ変更を試してみた

EC2ダッシュボード画面よりインスタンスタイプ変更

OSがENA対応か「modinfo ena」コマンドで確認します。以下の結果であればENAに対応したOSです。

$ modinfo ena
filename:       /lib/modules/3.10.0-862.6.3.el7.x86_64/kernel/drivers/net/ethernet/amazon/ena/ena.ko.xz
version:        1.2.0k
license:        GPL
description:    Elastic Network Adapter (ENA)
author:         Amazon.com, Inc. or its affiliates
retpoline:      Y
rhelversion:    7.5
srcversion:     15437686CDA6E16E3FE5EE2
alias:          pci:v00001D0Fd0000EC21sv*sd*bc*sc*i*
alias:          pci:v00001D0Fd0000EC20sv*sd*bc*sc*i*
alias:          pci:v00001D0Fd00001EC2sv*sd*bc*sc*i*
alias:          pci:v00001D0Fd00000EC2sv*sd*bc*sc*i*
depends:
intree:         Y
vermagic:       3.10.0-862.6.3.el7.x86_64 SMP mod_unload modversions
signer:         CentOS Linux kernel signing key
sig_key:        9C:60:A1:20:C6:30:21:90:5D:F0:D4:15:4A:9E:B1:9A:6C:E1:3C:FA
sig_hashalgo:   sha256
parm:           debug:Debug level (0=none,...,16=all) (int)

OSのENA対応を確認し、EC2のコンソール画面より t2シリーズのインスタンスを順次 t3 インスタンスに変更したのですが、KUSANAGIのインスタンスについては、

インスタンス開始のエラー
Enhanced networking with the Elastic Network Adapter (ENA) is required for the ‘t3.small’ instance type. Ensure that your instance ‘i-xxxxxxxxxx’ is enabled for ENA.

というようなエラーが発生し、インスタンスタイプを変更することができませんでした。

OS が ENA 対応していても、インスタンスのENAサポートオプションが有効になっていないと インスタンスタイプt3で起動できないようです。
次のコマンドで、インスタンスに enaSupport 属性が設定されているか確認できます。属性が設定されている場合、レスポンスは true になりますが、この時点では false になっています。

$ aws ec2 describe-instances --instance-ids i-xxxxxxxxx --query "Reservations[].Instances[].EnaSupport" --region ap-northeast-1
[
    false
]

AWS CLIでインスタンスタイプ変更

インスタンスのENAサポートオプションの設定は AWS のEC2ダッシュボードから実施できないので、PCのターミナルまたは管理インスタンスより AWS CLI を使います。

インスタンスを停止

$ aws ec2 stop-instances --instance-ids i-xxxxxxxxxxxxx --region ap-northeast-1

インスタンスのENAサポートオプションを有効にする

$ aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxxx --ena-support --region ap-northeast-1

インスタンスタイプを変更(以下は t3.small へ変更した場合)

$ aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxxx --instance-type t3.small --region ap-northeast-1

EBS最適化オプションを有効に設定(必要に応じて)

$ aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxxx --ebs-optimized --region ap-northeast-1

バーストパフォーマンスインスタンスのクレジット指定を無制限に設定(t3インスタンスはデフォルトで無制限になっていますが)

aws ec2 modify-instance-credit-specification --instance-credit-specification "InstanceId=i-000000000,CpuCredits=unlimited" --region ap-northeast-1

インスタンスを起動

$ aws ec2 start-instances --instance-ids i-xxxxxxxxxxxxx --region ap-northeast-1

インスタンスに enaSupport 属性が設定されているか確認します。trueが返ってきました。

$ aws ec2 describe-instances --instance-ids i-xxxxxxxxxxxxx --query "Reservations[].Instances[].EnaSupport" --region ap-northeast-1
[
    true
]

インスタンスにログインして、ena モジュールがインターフェイス(eth0)で使用されていることを次のコマンドで確認できます。

$ ethtool -i eth0
driver: ena
version: 1.5.0K
firmware-version:
expansion-rom-version:
bus-info: 0000:00:05.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

ちなみに、有効化前は以下の結果でした。

$ ethtool -i eth0
driver: vif
version:
firmware-version:
expansion-rom-version:
bus-info: vif-0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

AWS のEC2ダッシュボードから開いたEC2一覧上でも、インスタンスタイプがt3になっていることが確認できます。

参考:Linux インスタンスにおける Elastic Network Adapter (ENA) を使用した拡張ネットワーキングの有効化

注意:正常に起動しない場合

同じKUSANAGI環境でも、インスタンスによって正常に起動せず、接続できない場合がありました。その場合は、以下のコマンドで拡張ネットワーキングの属性を無効化して、元にインスタンスタイプへ戻し再度起動します。

aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxx --no-ena-support --region ap-northeast-1
aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxx --instance-type t2.small --region ap-northeast-1

参考:Elastic Network Adapter (ENA) のトラブルシューティング

コメントを残す

コメントは当サイト運営者の承認後に反映されます。
お名前はニックネームでも結構です。

Comments are allowed only in Japanese. / 日本語が含まれない投稿は無視されますのでご注意ください。