#0030

【AWS】Auto Scalingする前に知っておくべき7つのこと

2018-11-26 18:59 2019-02-20 02:17 "ゆざ"

Auto Scalingする前に知っておいてほしい7つの疑問とその答えについて解説していきます。

これから、あなたのAWSインフラ環境でAuto Scalingをしたいと思っている人やそもそもAuto Scalingってなに?という初心者の人にぜひとも読んでいただきたいです。

そのため、極力専門用語を使わずに解説していきます。

それでは、早速1つ目の疑問からいっていきましょう。

スポンサーリンク

Auto Scaling(オートスケーリング)ってなに?

そもそもAuto Scaling(オートスケーリング)とは何か知っていますか。

Auto Scaling設計

すでに知っている人も少なくないとは思いますが、ここで一度Auto Scalingについて簡単におさらいしておきましょう。

AWSのHP公式ページではこのように説明しています。

AWS Auto Scaling はアプリケーションを監視し、安定した予測可能なパフォーマンスを可能な限り低コストで維持するように、自動的に容量を調整します。

もっと具体的にいうと、Auto Scalingとはアクセス量やCPU使用量に応じて、EC2インスタンスの数を自動的に増減させてくれるものなのです。

次に、これを使うことでどんなメリットがあるのかを解説していきます。

なぜAuto Scalingを使うの?

まとめると、Auto Scalingには以下の3つのメリットがあるのです。

  • 耐障害性の向上
  • 可用性の向上
  • コスト効率の向上

Auto ScalingではEC2インスタンスの異常を検出し、自動的にインスタンスを終了します。

その後、新しいインスタンスを起動も自動的に行うので、耐障害性がかなり強いです。

また、複数のAZ(アベイラビリティーゾーン)でAuto Scalingを設定すると、1つのAZが利用不可能となっても、もう一方のAZで新しいインスタンスを起動できるため、可用性の向上にも繋がります。

さらに、EC2インスタンスを必要な量だけ自動的に追加・削除してくれるので、アクセスが少なくリソースをあまり必要ない時には、EC2インスタンスを適切な量に減らし、コスト効率の向上にも一役買ってくれます。

そして、逆に突然の大量アクセスにもEC2インスタンスの追加により対応することができます。

どこから新しくEC2を構築するの?

Auto Scalingを行う際には、EC2インスタンスの元となるイメージが必要です。

そのため、まず初めに初期設定をした元となるEC2インスタンスからAMIでイメージを作成して、このイメージからEC2インスタンスを構築します。

これが基本的なAuto Scalingで行うEC2インスタンスの構築方法です。

Auto Scaling設計

Auto Scaling時にAMIからEC2インスタンスを構築する際にEBSも一緒に自動構築させます。

これは、AMI  = 「EBS ボリュームの中のデータ(スナップショット) とインスタンスを構成する管理情報」を含む起動テンプレートであるためです。

つまり、元となるEC2インスタンスからイメージさえ作成しておけば、Auto Scalingするのはそこまで難しくないということです。

しかし、ここで「どうやって最新のデータでEC2を構築するの?」という疑問が湧いてきます。

どうやって最新のデータでEC2を構築するの?

1番初めは、AMIでイメージを作っておいてそれを元にEC2インスタンスを構築するようにしておくだけで確かに大丈夫です。

ですが、ここからさらにEC2インスタンスの中身のファイルの修正や追加をしたいとなった時はどうすれば良いでしょうか。

すでにEC2インスタンスが複数起動している状態では、そのEC2インスタンスの中身をむやみにいじるのは危険ですし、ちょっとの変更をするためだけにシステムを止めるようなことはしたくありません

そこで、マスターEC2インスタンスを使います。

マスターEC2インスタンスとは、新しくAMIを作成する時のみに使用して、Webサーバとして使用しないEC2インスタンスのことです。

これを作っておくと、起動しているEC2インスタンスの中身をむやみにいじる必要ないですし、とても安全な設計となります。

Auto Scaling設計

また、Auto Scalingで作成されたEC2インスタンスには起動時まず「git pull」をするといった仕組みにしておくと、gitに上がっている範囲の変更ならわざわざ新しくAMIをつくる必要はありません。

マスターEC2インスタンスで新しくイメージを作成したら、既存の古いAMIで構築したEC2インスタンスに加えて、新しいAMIを構築します。

その後、古いAMIで構築したEC2インスタンスを潰すことで、新しいAMIで構築したEC2インスタンスのみが残り更新することができます。

どうやって構築したEC2をELBにターゲティングするの?

ELB(Elastic Load Balancing)は、アクセス量を均等に振り分けてくれるものです。

これがないとせっかくAuto Scalingしてもアクセスが均等にならずにサーバーへの負荷分散ができなくなってしまいます。

では、いったい新しく構築したEC2インスタンスに対してELBからのアクセスを流すにはどうすればいいでしょうか。

これはすごくカンタンです。

Auto Scalingグループに属しているEC2インスタンスをELBでバランシングすれば、その後Auto Scalingで作成されたEC2インスタンスも自動的にELBに適応され、アクセスを分散してくれます。

そのため、ELBにどうやってターゲティングするかはそこまで考えなくても勝手にやってくれるのです。

どこのAZにEC2は構築されるの?

Auto Scalingで新しく構築させるEC2インスタンスは、EC2インスタンスが最も少ないAZ上で自動的に起動します。

そのため、どちらか一方のAZのみにEC2インスタンスが構築させることはありません。

しかし、例外としてはインスタンス起動が失敗した場合には、起動が成功するまでもう一方のAZで起動するような仕組みになっています。

したがって、異常事態にも迅速に対応することができるのです。

いつ新しくEC2が構築されるの?

Cloud Watch(クラウドウォッチ)で決めたアラームを閾値として、その閾値を越えると新しくEC2インスタンスを構築します。

例えば、起動中のEC2インスタンスがCPUの使用率が60%以上になったら、Auto Scalingして新たにEC2インスタンスを起動するというような設定をすることができます。

Auto Scaling設計

これもすごくカンタンなので、ざっくりとした流れをここに書いておきます。

  1. メトリック(監視対象の変数)を選択
  2. アラームを作成(例:CPUの使用率が60%以上になったら警告する)
  3. Auto Scaling グループの作成時にこの設定を結びつける

まとめ

この記事では、「Auto Scalingする前に知っておくべき7つのこと」というテーマでAuto Scalingをしようと思った時に突き当たる疑問の答えをまとめていきました。

  1. Auto Scaling(オートスケール)ってなに?
    • EC2インスタンスの数をアクセス数に応じて自動的に増減させてくれるもの
  2. なぜAuto Scalingを使うの?
    • 耐障害性/可用性/コスト効率の向上のため
  3. どこから新しくEC2を構築するの?
    • AMIのイメージから構築する
  4. どうやって最新のデータでEC2を構築するの?
    • マスターEC2インスタンスを使う
  5. どうやって構築したEC2をELBにターゲティングするの?
    • 自動的にターゲティングされる
  6. どこのAZにEC2は構築されるの?
    • 複数のAZに均一に構築される
  7. いつ新しくEC2が構築されるの?
    • Cloud Watchで設定した閾値を超えた時

Auto Scalingは一見とっつきにくいですが、実はカンタンに実装することができます。

今回、解説した点を押さえてぜひ充実したインフラ環境を構築してみてくださいね。

この記事を書いた人

学生Webエンジニア PLANインターン生 PHP Laravel Python HTML CSS JS

【名前】 "ゆざ"

【関連】 株式会社PLAN / MIYABI Lab / Tmeet(twitterユーザーマッチングサービス) /

【MIYABI Lab運営】23歳/同期がト◯タやMicr◯softに就職する中、ベンチャーに未経験でWebエンジニアになるのを選んだ脳科学専攻の理系院生◆人見知り日本縦断◆機械学習/Web歴5ヶ月

Twitterやってます

最新の技術ブログはこちら