さるへい備忘録

さるへいのやったことを綴っているブログです。基本的にテクノロジーの話題です。

AWSのEC2でT2インスタンスからT3インスタンスへの移行

AWSのEC2インスタンスをT2 -> T3に変更しましたが、その時の手順が非常にめんどくさかったので紹介します。

T3インスタンスとは?

公式の紹介ページはこちら

aws.amazon.com

T2インスタンスも、低コストでバースト可能という意味では非常に優秀だったのですが、T3はそれに対して

  • 最新のプロセッサ
  • 無制限バーストモードがデフォで採用されてる(その分アドオンでお金が掛かる可能性あり)
  • EBS最適化を利用可能
  • T2より若干安い

というもので、まぁT2使ってるなら乗り換えない意味はそんなにないかな?と思えるようなインスタンスタイプです。
ただ、デメリットとしては

  • T2だったら最初からいくらか付与されているクレジットがT3だと0から蓄積しなければいけない

といったものがあります。とはいえ最初の瞬間からいきなりネットワークにつなげて運用することはそうそうないので、準備中に勝手にクレジットが貯まるからいいんじゃないでしょうか。
急なスケールアウト大変じゃんっていうならまぁその時だけT2使うなりすれば良いでしょう。

T2 -> T3への移行

T3では、 Elastic Net Adapter (移行ENA)の導入が必要です。

aws.amazon.com

こちらの作業がちょっとめんどくさかったので紹介します。
最終的にawscliを使う必要があるので、それは注意してください。

LInuxのアップデート

まず、利用してすインスタンスのOSがENAに対応できるかをチェックする必要があります。
コンソール上で確認してみましょう。

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

T2インスタンス採用した当初のままのOSならば、こんな感じで対応してないよって出ると思います。 下記のような表示が出た場合は対応しているので、この手順はスキップして大丈夫です。

 $ modinfo ena
filename:       /path/to/ena.ko.xz
...
...
...
...

さて、ENAに対応させるにはどうすればいいか?
それは非常に単純で、 OSアップデート です。

CentOSなら以下のコマンドになります。

$ sudo yum update

OSアップデートは検証が難しいからやりたくないよって話なら諦めましょう。

その後、インスタンスを再起動してみてENA確認のコマンドで大丈夫そうだったらこの手順はOKです。

awscliでインスタンスのENAサポートをONに

awscliで対象のインスタンスIDのENAサポートをONにします。
この作業には、awscliのバージョンが古かったり、awscliからのアクセスでEC2へのアクセス権限がないとうまくいかないので事前にそこは対応しましょう。 また、この時にはインスタンスを停止しておくと後で面倒がないので良いです。

awscliを最新にする場合は以下コマンドでOKです。

$ pip install -U awscli

ENAサポートをONにするには以下コマンドです。何も出なかったら成功です。

$ aws ec2 modify-instance-attribute --instance-id インスタンスID --ena-support

その後インスタンスタイプを変えて起動できたら完了です。僕はこのインスタンスの起動にものすごい時間がかかったので注意してくださいね。多分仕様でしょう。

ちなみに、僕はENAサポートをONにする前になんとなくT3にインスタンスタイプを変更してみて、起動エラーが出たのですが、その場合そのインスタンスIDのインスタンスはその時変更したインスタンスタイプでは一生起動しなくなりました。
解決方法は、AMIをそのインスタンスから作り直してインスタンスIDを変えて起動です。中でエラー起動したものと同じものが指定されてるんですかね。。。ただでさえ起動に時間がかかるので非常にしんどかったです。