AWS Elastic Beanstalkの既存の環境をT2インスタンスに置き換える方法


AWS Elastic Beanstalk

※当ブログではアフィリエイト広告を利用しています。

2014年07月1日より、Amazon EC2で新しいインスタンス「T2」が使用できるようになりました。CPU性能を常に必要としないアプリケーションの場合は従来のインスタンスよりも更に安い価格で利用できます。

そこで既存のAWS Elastic Beanstalk環境のt1.microインスタンスをt2.microインスタンスに置き換えてみたのでその手順をメモします。

Amazon EC2 T2インスタンスとは

CPUパワーを必要としない通常時はインスタンスごとに割り当てられたベースラインCPU利用率(10~40%)で動作しますが、ベースラインを下回っていた時間の分だけ「CPUクレジット」と呼ばれるポイントのようなものが蓄積していくインスタンスです。

CPUパワーが必要な処理を動かす場合には貯めておいたCPUクレジットを消費して、クレジット数に応じた時間だけCPUを100%の性能で使うことができます。WEBサイトや一日の最後に重いバッチ処理が走るサーバーなどにマッチしそうです。

以下は従来のt1.microインスタンス、m1.smallインスタンスと新しいt2インスタンス各種の性能を並べた表です。料金は米国東部(バージニア北部)の場合のものです。ベースライン性能とCPUクレジットという概念が増えたものの、旧インスタンスに比べてメモリが増え、料金がぐっと安くなっています。

名前 vCPUs ベースライン性能 RAM (GiB) CPUクレジット/時間 1時間あたりの料金 1か月あたりの料金
t1.micro 1 0.615 $0.02 $14.64
m1.small 1 1.7 $0.044 $32.21
t2.micro 1 10% 1 6 $0.013 $9.50
t2.small 1 20% 2 12 $0.026 $19.00
t2.medium 2 40% 4 24 $0.052 $38.00

ユースケースによりますがAWS公式ブログでも下記の通り、既存のインスタンスを置き換えるのが妥当であると書かれています。

比較するのが必ずしも正確ではありませんが、次のように、前の世代のEC2インスタンスをT2インスタンスに置き換えるのが妥当です。:

  • t1.microをt2.microへ
  • m1.smallをt2.smallへ
  • m1.mediumをt2.mediumへ
引用元:Amazon Web Services ブログ: 【AWS発表】バースト可能な性能を持つ新しい低コストEC2インスタンス

T2インスタンスについては下記のサイトで詳細な情報がまとめられています。
関連サイト:AWS – T2インスタンス調査結果 – Qiita

AWS Elastic Beanstalkの既存環境をT2インスタンスに置き換える方法

本エントリの本題です。既存のAWS Elastic Beanstalk環境では、ConfigurationからEC2インスタンスを選択してもT2インスタンスが一覧に現れません。

そこで完全に新しい環境を作成し、既存の環境をそこに移し替える方法でT2インスタンスに置き換えます。

前提条件

既存環境でRDSを使用している場合、DBのスナップショットを取っておく必要があります。RDSを使用していない場合は必要ありません。

またT2インスタンスはVPC(Amazon Virtual Private Cloud)の中にしか作成できないため、新しく作る環境ではVPCを作成する必要があります。

新規AWS Elastic Beanstalk環境の作成

T2インスタンスに移行したいアプリケーションで「Actions」から「Create New Environment」を選択します。
AWS Elastic Beanstalk 新規環境の作成

Environment Type

環境のタイプはそれぞれ移行元の環境と同じものを選択します。
AWS Elastic Beanstalk Environment type

Application Version

既に存在するアプリケーションのバージョンから選ぶか、ZIPファイルをアップロードまたはS3に格納したアプリケーションファイルを指定します。
AWS Elastic Beanstalk Application Version<

Environment Information

新しい環境の名称、URL、詳細を設定します。
AWS Elastic Beanstalk Environment Information

Additional Resources

RDSを使用する場合、「Create an RDS DB Instance with this environment.」にチェックを入れます。またT2インスタンスを使用する場合、下の「Create this environment inside a VPC」は必須なのでチェックを入れます。
AWS Elastic Beanstalk Additional Resources

Configuration Details

「Instance type」で使いたいT2インスタンスを選びます。「EC2 key pair」は既存のものを流用可能です。
AWS Elastic Beanstalk Configuration Details

Environment Tags

key-valueのペアで環境独自のタグを定義できるようです。特に必要なければ空白でOKです。
AWS Elastic Beanstalk Environment Tags

RDS Configuration

RDSを使用する場合「Snapshot」より事前にとっておいたDBスナップショットを指定します。その他DBタイプ等の各種設定を行います。
AWS Elastic Beanstalk RDS Configuration

VPC Configuration

「VPC」でBeanstalk環境で使用したいVPCを選択し、「Associate Public IP Address」をチェックします。また画面下部の「EC2」で、インスタンスを所属させるサブネットを最低一つ選択します。
AWS Elastic Beanstalk VPC Configuration

Review

ここまでに設定した内容を確認します。
AWS Elastic Beanstalk Review
問題なければ「Launch」ボタンを押すと環境構築が開始します。しばらく時間がかかります。
AWS Elastic Beanstalk Launch
環境構築が完了したら画面中央左の「Health」が「Green」になります。
AWS Elastic Beanstalk Health Green
「Configuration」の「Instances」より、インスタンスタイプがT2となっていることを確認できます。
AWS Elastic Beanstalk Using T2

AWS Elastic Beanstalk環境の置き換え

環境の移行方法はURLを入れ替える方法と、独自ドメインを使用していてCNAMEレコードを設定してある場合はレコードの値を書き換える方法があります。

旧環境と新環境のURLを置き換える場合

Elastic Beanstalkトップページよりから該当のアプリケーションの「Swap URLs」をクリックします。
AWS Elastic Beanstalk Swap URLs
確認画面となるので置き換えて問題なければ「Swap」ボタンを押します。旧環境と新環境のURLが入れ替わります。
AWS Elastic Beanstalk Swap

CNAMEレコードを書き換える場合

Amazon Route53で、Elastic Beanstalkアプリケーションで使用しているCNAMEレコードのValueを、新しいElastic Beanstalk環境のURLに書き換え、「Save Record Set」をクリックします。しばらく待つとCNAMEレコードに設定したURLにアクセスすると、新しい環境に繋がるようになります。
AWS Elastic Beanstalk CNAMEレコードを書き換え

CPUクレジットの使用量と蓄積量の確認

CPUクレジットの使用量と蓄積量はEC2インスタンス一覧よりT2インスタンスを選択し、「Monitoring」タブから確認できます。「CPU Credit Usage」がCPUクレジットの使用状況、「CPU Credit Balance」が蓄積状況です。
T2インスタンス CPUクレジットの使用量と蓄積量の確認

おわりに

t2.microインスタンスをWEBアプリケーションで早速使ってみましたが、t1.microインスタンスよりもメモリが多いためか若干表示が高速になったような印象を受けました。

普段はベースライン性能で問題ない用途であればCPUクレジットは貯まっていく一方なので、T2インスタンスの登場で「必要な分だけ使う」というクラウドの恩恵をますます実感できるようになったと思いました。