長生村本郷Engineers'Blog

千葉県長生村本郷育ちのエンジニアが書いているブログ

AWS EC2 t2 から t3 へ移行する為の step by step

f:id:kenzo0107:20180914130511j:plain

概要

AWS EC2 に t3 系インタスタンスが登場した為、サクッとできるかと思いきや、つまづいた箇所をまとめました。

今回対象のインスタンスは HVM で ubuntu 16.04.5 LTS を使用しました。

t2 と比べて t3 は何がいいの?

t2 から t3 へ移行する大まかな流れ

要は、ena モジュールをインストールし、EC2 ENA サポートを有効化する必要がありました。

  1. t2 インスタンス停止
  2. AMI 作成
  3. t2 インスタンス起動
  4. t2 インスタンスカーネルモジュール(ena) のインストール
  5. ena モジュールインストール確認
  6. t2 インスタンス停止
  7. インスタンスタイプを t3 へ変更 (credit: unlimited もしたい場合はここで)
  8. t3 インスタンス起動

ENA って?

Elastic Network Adapter – Amazon EC2 向けの高性能パフォーマンスネットワークインターフェイス

プロセッサのワークロードを軽くし、ネットワークパケットと生成または処理を行う vCPU 間で短く効率的なパスを作成するために構築されています。

Linux インスタンスにおける Elastic Network Adapter (ENA) を使用した拡張ネットワーキングの有効化 には以下のように記載があります。

Amazon EC2 は、Elastic Network Adapter (ENA) を介して C5, C5d, F1, G3, H1, I3, m4.16xlarge, M5, M5d, P2, P3, R4, R5, R5d, X1, X1e, and z1d インスタンスに拡張されたネットワーキング機能を提供します。

拡張ネットワーキングは、Amazon EC2 コンソールから管理することはできません。

HVM インスタンスでのみサポート

まとめると、

  • Amazon EC2 向けの高性能パフォーマンスネットワークインターフェイス
  • HVM (Hardware-assited VM:完全仮想化) 環境でサポートされている。
  • PV (ParaVirtual:準仮想化) 環境ではサポートされない。
  • ENA というカーネルモジュールを介す事で、インスタンスに拡張されたネットワーキング機能が利用できる。

pv/hvm は AWS コンソール>EC2 説明の「仮想化」の項目で確認できます。
pv の場合は、 hvm の移行を検討する必要があります。

f:id:kenzo0107:20180914130817p:plain

以下から設定に進みます。

ENA 有効化設定手順

以下前提とします。

  • AMI を取る等のバックアップが済んでいる。
  • t2.small から t3.small に移行する。

Ubuntu での拡張ネットワーキングの有効化

ubuntu:~$ sudo apt-get update && sudo apt-get upgrade -y linux-aws

他OSの対応法も先ほどの Linux インスタンスにおける Elastic Network Adapter (ENA) を使用した拡張ネットワーキングの有効化 に記載されています。

W: mdadm: /etc/mdadm/mdadm.conf defines no arrays. エラーが発生した場合

/etc/mdadm/mdadm.conf ファイルに以下一文を追記します。

ARRAY <ignore> devices=<ルートデバイス>

自分の場合は以下の一文を一番下に追記して、もう一度 コマンド実行したら通りました。

ARRAY <ignore> devices=/dev/sda1

ena カーネルモジュールに関する情報表示

modinfo ena を実行し以下のように表示されれば OK です。

ubuntu:~$ modinfo ena

filename:       /lib/modules/4.4.0-81-generic/kernel/drivers/net/ethernet/amazon/ena/ena.ko
version:        1.1.2
license:        GPL
description:    Elastic Network Adapter (ENA)
author:         Amazon.com, Inc. or its affiliates
...

EC2 ENA サポート有効化

// インスタンス停止
macOS%$ aws ec2 stop-instances --instance-ids <instance id>

// ENA サポート設定
macOS%$ aws ec2 modify-instance-attribute --instance-id <instance id> --ena-support true

// EBS 最適化 (任意)
macOS%$ aws ec2 modify-instance-attribute --instance-id <instance id> --ebs-optimized

// credit unlimited 設定 (任意)
macOS%$ aws ec2 modify-instance-credit-specification --instance-credit-specification "InstanceId=i-<instance id>,CpuCredits=unlimited"

// インスタンスタイプ変更
macOS%$ aws ec2 modify-instance-attribute --instance-id <instance id> --instance-type t3.small

// インスタンス起動
macOS%$ aws ec2 start-instances --instance-ids <instance id>

これで t3 デビューを飾ることができました♪

参照

Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS)

Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS)

*1:本稿執筆時 2018-09-14