Amazon EC2 Auto Scaling の設定と注意点

記事タイトルとURLをコピーする

みなさんこんにちは。マネージドサービス部MS2課の塩野です。

必要なときに必要なリソースを自動的に使えるソリューションといえば、私の場合一番最初に思いつくのが Amazon EC2 Auto Scaling です。EC2の負荷に応じて自動的にスケールアップ/スケールダウンしてくれる便利なサービスですが、自分自身でも理解しきれていない部分がありましたので、すこし整理してみました。

Amazon EC2 Auto Scalingの特徴

ここではたとえ話になりますが、とあるEC2が1台だけのシステムで、導入時から長い年月の間に利用者が増えて業務時間帯に処理しきれない状態になってしまっていたとします。

現状でも支障がでているのに、このまま放置するとさらに人が増えれば増えるほど、どんどん処理が遅くなって業務に多大な影響が出てしまいます。

そこでAuto Scaling機能を使用すると、EC2の負荷に応じて自動的にスケールアップすることができるため、1台で処理しきれなかった処理を2台、3台と、複数台のサーバで分散処理することにより、急激に負荷が増えたとしても1台あたりの負荷を軽減させることができます。

じゃ、最初から台数を増やせばいいじゃないかってなりますが、常時必要最大の台数で運用すると利用者がいない時間帯はリソースがムダになりますし、そのムダなリソースを動かすために費用が高くなります。Auto Scaling機能を使用すると、EC2の負荷が低くなった場合に自動的にスケールダウンさせることもできるため、負荷に応じて必要な時に必要なリソースを必要なだけ使うというクラウドのメリットを享受できます。

Amazon EC2 Auto Scalingの設定

ここまででAuto Scaling機能がとても便利な機能ということがわかりましたので、ここからはそのAuto Scaling機能をどう設定するかの話をしたいと思います。Auto Scaling機能の設定ですが、どこまでやるかによって設定項目が変わってきますが、単純なスケールアップやスケールダウンだけの場合は、起動テンプレートを作成してAuto Scaling グループを作成するだけでAuto Scalingの設定ができます。必要に応じてロードバランサー(Application Load Balancerなど)を追加したり、Route53でDNSの設定をおこなうことで、スケールアップされたEC2インスタンス群に対しての通信を分散させることができるようになります。

今回は最も基本的なスケールアップ・スケールダウンのみの設定になります。

起動テンプレートの作成

1.まずは起動するOSのマスターイメージの作成をおこないます。ここで作成したマスターイメージがそのままオートスケーリングで横展開されていきます。

2.起動テンプレートを作成します。項1で作成したマスターイメージを選択し、アクション>イメージとテンプレート>インスタンスから「テンプレートを作成」をクリックします。



3.起動テンプレート作成画面で「起動テンプレート名」、「テンプレートバージョンの説明」の欄に任意の情報を入力します。必要に応じてインスタンスタイプやネットワーク設定(サブネット、セキュリティグループなど)の修正をおこない、「起動テンプレートを作成」ボタンをクリックします。



※正しく起動テンプレートが作成されている場合は、インスタンス>起動テンプレートの中に、さきほど作成したテンプレートが表示されます。

Auto Scalingグループの設定

1.次にAuto Scalingグループの作成をおこないます。EC2>Auto Scalingグループの中の「Auto Scalingグループを作成する」ボタンをクリックします。



2.「Auto Scaling グループ名」に任意の名前を入力し、起動テンプレートの作成の項3で作成した起動テンプレート名を選択し、画面下の「次へ」をクリックします。


3.ネットワークの設定で必要に応じてVPC、アベイラビリティーゾーンとサブネットの設定を修正し、「次へ」をクリックします。

4.そのまま「次へ」をクリックする。



5.グループサイズの設定をおこないます。ここではデフォルト値の希望する容量、最小容量、最大容量をすべて1で設定します。


6.「次へ」のボタンをクリックします。

7.「次へ」のボタンをクリックします。

8.「次へ」のボタンをクリックします。

9.「Auto Scaling グループを作成する」ボタンをクリックします。

※Auto Scaling グループが作成されると、項5で指定したグループサイズに基づきインスタンスが自動起動します。

Auto Scalingグループの追加設定、注意点など

  • Auto Scalingグループの設定の項4の画面で、ロードバランサー配下にAuto Scaling グループのEC2を置きたい場合は、既存のロードバランサーにアタッチする、または新しいロードバランサーにアタッチするを選択します。そしてAuto Scalingグループをロードバランサーにアタッチした場合は、EC2ヘルスチェックのほかにELBヘルスチェックを実施することができます。

  • Auto Scalingグループの設定の項6の画面で、グループサイズの希望する容量、最小容量、最大容量を指定できます。希望する容量は起動時の容量、最小容量、最大容量は負荷に応じて変わる上限と下限の値となりますが、希望する容量は必ず最小容量、最大容量の間の値にする必要があります
    ※なお、希望する容量、最小容量、最大容量をすべて0にすると、Auto Scalingグループのインスタンスは起動しません。すでに起動しているインスタンスがある場合は終了処理が実行されます。

  • 負荷に応じて動的にインスタンスの数を変更したい場合は、動的スケーリングポリシー、または予測スケーリングポリシーを作成します。急激に負荷が変わるような環境の場合は動的スケーリングポリシーより柔軟な設定ができる予測スケーリングポリシーを使用することをオススメします。

    オートスケーリング設定
    オートスケーリング>動的スケーリングポリシー設定画面
    オートスケーリング>予測スケーリングポリシー設定画面

まとめ

Amazon EC2 Auto Scaling の機能は、うまく使えば負荷に応じてEC2の台数を自動的に変更できるとても便利な機能です。また台数の増減も容量変更だけで済みますので、事前にテンプレートを作成しておけば、よく使う検証環境をさっと作ったり潰したりするなんて使い方をすることもできて、使い道はいろいろあるように思います。

この記事がどなたかのお役に立てれば幸いです。

参考情報

docs.aws.amazon.com

塩野 正人 ブログ記事一覧はコチラ

マネージドサービス部MS2課(MS部MS2課)所属。ネコが好きです。