Database JUNKY

MySQL,MariaDBを中心としたブログです

AWS EC2 インスタンスタイプの変更でハマりました。ENAってなんだ??

インスタンスタイプを変更したら、ec2が起動しなくなった(汗

もともとの、VPCのNATインスタンスとして利用しておりましたが、いつの間には、m5インスタンスなるものが出ているじゃないっすか?汗 しかも、安い!!

m4.Xlarge : 月コスト: $146.40 最大帯域: 791 Mbits/sec m5.large
月コスト: $70.28 最大 10 Gbps

コストパフォーマンスの観点から、ことネットワークの帯域が大きく、かつ、コストが下がるってことを理由に、m4.Xlarge から m5.Largeにインスタンスタイプを切り替えてみようともくろみ、さて起動しようとしたら、なんかエラーで出て起動でないって、、あわわ。。

f:id:hit10231023:20180309123622p:plain

Enhanced networking with the Elastic Network Adapter (ENA) is required for the 'm5.large' instance type. Ensure that your instance 'i-xdsdsxddddd' is enabled for ENA.

インスタンス切り替えるのはいいけど、ENA有効になっている?って怒られて起動しなくてビビりました。そもそも、ENAって何?笑

ENA

次世代ネットワークドライバってやつらしい。

EC2 インスタンス向けの次世代ネットワークインターフェイス、Elastic Network Adapter (ENA) を導入

まあ、全然読んでないのですが、ネットワークの帯域太くできるよって意味だと思うので、現行のm4.Largeはそれが対応していないってことなのかな? ってなわけで、これをENA対応する設定を試してみたいと思います

ENAがサポートされているかチェックする

ひとまず、ENAがサポートされているのかを一旦チェックします。なお、チェックは、aws cliで行いました。

aws ec2 describe-instances --instance-ids i-xdsdsxddddd --query 'Reservations[].Instances[].EnaSupport'
----------------------
[]

たぶん、これ、結果が空だからサポートされてないってことですよね?汗

Amazon Web Services実践入門 (WEB+DB PRESS plus)

対象のインスタンスにログインしてみてもこんな感じでした

$ sudo modinfo ena
----
modinfo: ERROR: Module ena not found.

ENAのインストール

じゃあ、ENAをインストールしてみましょうってことで。。

対象のインスタンスをアップデート

$ sudo yum update

・・で一旦インスタンスを停止

対象のインスタンスの停止を確認したら、ローカルコンピューターから以下のコマンドを実行

aws ec2 modify-instance-attribute --instance-id i-xdsdsxddddd--ena-support

・・でインスタンス再開

再度インスタンスがenaをサポートしているか確認する

$ sudo modinfo ena
----
filename:       /lib/modules/4.9.85-38.58.amzn1.x86_64/kernel/drivers/amazon/net/ena/ena.ko
version:        1.4.0U
license:        GPL
description:    Elastic Network Adapter (ENA)
author:         Amazon.com, Inc. or its affiliates
srcversion:     963AA763EBF4D86DF9EF826
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:
retpoline:      Y
intree:         Y
vermagic:       4.9.85-38.58.amzn1.x86_64 SMP mod_unload modversions
parm:           debug:Debug level (0=none,...,16=all) (int)

ここまでくれば、ENAは有効になっていると思いますので、通常通りの手順で

  1. インスタンスの停止
  2. インスタンスタイプの変更(m4.Xlarge -> m5.large)
  3. インスタンスの開始

で無事切り替わったと思います。(trueって出ているので)

# aws ec2 describe-instances --instance-ids i-xdsdsxddddd --query 'Reservations[].Instances[].EnaSupport'
[
    true
]

停止して設定加えて起動、再度停止して、インスタンスタイプ変更して、起動と結構何回も停止開始を繰り返す必要があるのがちょっと残念ではありますが、この手順で無事ENAに対応したインスタンスが作成されますのでぜひ太い帯域のネットワークライフを!!!