1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

古の非Nitro世代インタンス(T2)を最新のインスタンス(T3)に変更する

Last updated at Posted at 2019-10-08

はじめに

昔からAPIサーバーとして運用されているEC2インスタンスのインスタンスタイプを変更しようとしたところ、諸々のエラーが出てすんなり変更できなかったため、最終的な更新手順の備忘録です。

#TL;DR
・インスタンスのenaモジュールとカーネルバージョンを確認
・カーネルをアップデートしてenaをインストール
・AWSCLIからenaを有効化

現状の確認

※ 以降の手順でsshでEC2に接続、及び、AWSCLIを使用しますが、環境構築については割愛させていただきます。

最初にt2インスタンスを停止し、インスタンスタイプをt3に切り替えて起動を試みたところ、下記エラーで起動することができませんでした。
ENA ERROR.png

エラーについて調べると下記公式の適用手順が見つかったため、これにしたがって進めていきます。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/enhanced-networking-ena.html

1. EC2にsshで接続

2. enaモジュールがインストールされていることを確認

実行.
modinfo ena
結果.
modinfo: ERROR: Module ena not found.

古いAMIにはenaモジュールが含まれていないため、

enaを含む最新のカーネルとカーネルモジュールでインスタンスを更新

する必要があるようです。

3. カーネルのバージョン確認

実行.
uname -srv
結果.
Linux 3.14.35-28.38.amzn1.x86_64 #1 SMP Wed Mar 11 22:50:37 UTC 2015

インスタンスの更新

公式の手順に従ってパッケージを更新して確認します。

以前の Amazon Linux AMI を使用してインスタンスを起動し、まだ拡張ネットワーキングが有効になっていない場合、拡張ネットワーキングを有効にするには次の手順を実行します。

##1. パッケージの更新

sudo yum update -y

アップデートが完了したら一旦再起動して再度sshで接続します。

##2. 再起動して確認
ena

実行.
modinfo ena
結果.
modinfo: ERROR: Module ena not found.

カーネルのバージョン

実行.
uname -srv
結果.
Linux 3.14.35-28.38.amzn1.x86_64 #1 SMP Wed Mar 11 22:50:37 UTC 2015

なんと、変化がありません...

【CPUの脆弱性対応】古いAmazon Linuxのkernelを最新版にアップデートするによると、yum.confファイルにreleaseverの変数を設定しないと、カーネルのバージョンが固定されてしまい更新できないそうです。

##3. yum.confの修正(追加)

実行.
sudo vi /etc/yum.conf
yum.conf.diff
~
# of Amazon Linux AMI. If you prefer not to automatically move to
# new releases, comment out this line.
- #releasever=latest
+ releasever=latest

#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
~

これで再度sudo yum update -yで更新し、再起動して確認します。

##4. 再起動して確認
ena

実行.
modinfo ena
結果.
filename:       /lib/modules/4.14.146-93.123.amzn1.x86_64/kernel/drivers/amazon/net/ena/ena.ko
version:        2.1.1g
license:        GPL
description:    Elastic Network Adapter (ENA)
~

カーネルのバージョン

実行.
uname -srv
結果.
Linux 4.14.146-93.123.amzn1.x86_64 #1 SMP Tue Sep 24 00:45:23 UTC 2019

無事カーネルのアップデートとenaのインストールが完了しました!

続いて、インスタンスのEnaSupportを有効化します。
以降の手順はAWSCLIでローカルPCから実行するため、インスタンスはシャットダウンしておきます。

##5. EnaSupportの確認

実行.
aws ec2 describe-instances --instance-id i-XXXXXXXXXXXX --query 'Reservations[].Instances[].EnaSupport'
結果.
[]

無効の場合は空の配列が帰ってきます。

##6. EnaSupportの有効化

実行.
aws ec2 modify-instance-attribute --instance-id i-XXXXXXXXXXXX --ena-support

実行しても反応がないため、有効化されたか確認します。

##7. EnaSupportの確認

実行.
aws ec2 describe-instances --instance-id i-XXXXXXXXXXXX --query 'Reservations[].Instances[].EnaSupport'
結果.
[
    true
]

有効の場合はtrueが帰ってきます。

これでインスタンスの更新は完了です!
インスタンスタイプをt2からt3に変更して、無事起動できることを確認します。

まとめ

おそらくあまりにも古いAMIを使用していたため、公式の手順だけでは更新することができませんでした。
定期的にカーネルのバージョンを確認して、最新の状態に保つのが大切ですね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?