LoginSignup
9
8

More than 5 years have passed since last update.

AWS勉強会(3) / Auto Scalingチュートリアル

Last updated at Posted at 2018-09-04

社内の初心者向けAWS勉強会で実施している最初のテーマ「LAMP環境を構築しよう」において、動作しているEC2に対して、死んでも甦るようにしたり、簡単な設定で同じ内容のEC2を複数起動させたりする設定についての手順。

というよりは機能のメモ。
(以下、設定したゴールに対する構築手順になっていないので、Auto Scaling + ELBの構成で別途まとめるつもり → AWS勉強会(4) / ELB + AutoScalingグループでwebサーバ

設定するものは以下の2項目

項目 概要
起動設定 Auto Scalingで起動するEC2自体の設定(AMIやインスタンスタイプ、ユーザーデータなど)を定義
Auto Scalingグループ 起動設定に対して、どのネットワーク(VPCやサブネット)で起動させるのか、起動するインスタンス数、ヘルスチェックの方式やELB連携などを定義

簡単に説明するとこんな感じ。
「起動設定」で定義した内容のEC2が「Auto Scalingグループ」で設定したルール(VPCやサブネット/AZ、インスタンス数など)に従って起動したり削除される、というもの。
(現在、起動設定にかわる「起動テンプレート」が利用できるようになっている。ただし、ここではまだ扱わない)

起動設定

まず、Auto Scalingグループで管理するEC2自体の設定を行う。(Auto Scalingグループのメニューからも作成できる)

基本的にはEC2の作成と同じ流れ。

AMIの選択

image.png

Amazon提供のAMIだけでなく、自分で作成したスナップショットをベースにすることもできる

詳細設定

image.png

名称は「どんな内容のEC2か」を基準につければOK

高度な詳細

ユーザーデータの入力はここ。
下記は例として、起動時にhttpdをインストールしておくために設定。
詳細はAWS勉強会(補足1) / ユーザーデータでEC2作成時の初期設定を行うを参照。

image.png

もう一つ重要なのが、IPアドレスの設定。
デフォルトのVPC以外のネットワーク設定の場合(例えば勉強会用に改めて作成したVPC、など)、デフォルト設定だとパブリックIPアドレスが割り当てられない。
グローバルIPが必要な場合は、明示的に「パブリックIPアドレスを各インスタンスに割り当てます」を選択する。
(※ どのVPCを使うかの設定は、ここで作成している起動設定でなく、後述のAuto Scalingグループの設定で行う)

image.png

あとはストレージとセキュリティグループの設定を行う。
EC2の作成と異なり、VPCやサブネットの設定はここでは行わないため、作成済みのすべてのセキュリティグループが選択肢に出てくるので、Auto Scalingグループで指定するVPCと異なるセキュリティグループを選ばないように注意。

Auto Scalingグループ

Auto Scalingグループの作成

「Auto Scalingグループの作成」押下すると、簡単な説明が表示されるので「今すぐ始める」押下

Auto Scalingグループの作成を始める。

image.png

起動設定の選択

作成した起動設定を選択する。

image.png

詳細設定

Auto Scaling対象のEC2を、どのネットワークで起動するか等を設定する。

image.png

サブネットは複数選択することができる。
複数のサブネットを選択しておくことで、複数のAZにEC2を起動させることができ、可用性を高める構成にすることができる。

image.png

ちなみにここは不親切なことに、サブネットのNameタグが表示されなくて、どれがどのサブネットかわかりづらいので注意(アドレスとAZで判断するしかない?)

高度な詳細

ここでは作成済みのELBがあればロードバランサと連携させる設定もできる。
(今回は簡単に紹介するだけ。そのうち「Auto Scaling + ELB設定」の構成をやる)

ロードバランシングの設定

image.png

作成済みのELBを選択できる

ヘルスチェックのタイプ

チェックのタイプ 動作
EC2(デフォルト) EC2自体のステータスチェックの結果で死活判定(要はVMが生きているか)
ELB 上記のEC2チェック+ELBのヘルスチェックで死活判定(上記+HTTPのELBであればHTTP的にも死活判定)

image.png

スケーリングポリシーの設定

ここではEC2の負荷状態などで自動でスケーリング(インスタンス数を増減して負荷を分散させる)させるための設定ができる。
設定しない場合は「初期サイズを維持」ですすめる(サイズを手動で変更することはできる)

image.png

あと、通知の設定も可能(試してない)

タグの設定

image.png

Nameタグを設定しておくと、Auto Scalingグループによって起動したEC2にタグが設定される

image.png

起動数を2以上にした場合も、すべて同じタグが設定される
(OpenShiftみたいにランダムなsuffixが付加されて一意な名前になるわけではない模様)

image.png

起動

これくらいで作成を実行すると、(デフォルトのままであれば)開始時1インスタンス設定にしたがって、一つのインスタンスが作成される

image.png

image.png

なんか初回失敗してるみたいだ。。(迷宮入り)
でも一応起動した。

インスタンスの一覧でも確認できる

image.png

起動したプライベートサブネットのEC2にアクセスし、httpdがインストール済みの状態か確認

zaki@wensley% ssh -o ProxyCommand='ssh -i ~/.ssh/aws-practice.pem ec2-user@*.*.*.* -W 172.26.20.82:22' -i ~/.ssh/aws-practice.pem ec2-user@172.26.20.82 
The authenticity of host '172.26.20.82 (<no hostip for proxy command>)' can't be established.
ECDSA key fingerprint is SHA256:dppD5TFrKgMxH18/xgBjzYFqGjCIa4AjUO3aAy1sJCU.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.26.20.82' (ECDSA) to the list of known hosts.

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
2 package(s) needed for security, out of 3 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-172-26-20-82 ~]$ 
[ec2-user@ip-172-26-20-82 ~]$ 
[ec2-user@ip-172-26-20-82 ~]$ 
[ec2-user@ip-172-26-20-82 ~]$ sudo su -
[root@ip-172-26-20-82 ~]# sudo /etc/init.d/httpd status
httpd is stopped
[root@ip-172-26-20-82 ~]# 

※ ユーザーデータにhttpdのインストールのみ記述していたので、webサーバのプロセスは起動はしていない
そのあたりの設定はAWS勉強会(補足1) / ユーザーデータでEC2作成時の初期設定を行うを参照。

で、このEC2は今(複数設定したAZのうちの一つである)ap-northeast-1aでのみ1台起動している。

スケール数の変更

Auto Scalingグループの一覧の[操作]->[編集]から。

image.png

画面下部の詳細部分が編集状態になる

image.png

希望するキャパシティを2に変更してみる(その際、最大の値も調整が必要)
[保存]を押下(右上にある)

するとアクティビティ履歴に2つ目のインスタンス起動

image.png

インスタンスを確認すると、(複数設定したAZのうちの)もう片側のAZで起動していることが確認できる。

image.png

状態としてはこんな感じ。

AutoScaling.png

この状態から

  • キャパシティを減らす設定を行う
    • 起動しているEC2が1台削除される
  • Auto Scalingグループの設定でなく、インスタンス一覧のメニューから、1台削除操作を行う
    • キャパシティ1設定の状態での削除処理のため、稼働しているEC2が0であることが検知されると1台新たに起動する
  • キャパシティ数を0にすると
    • 全部消える

キャパシティ数を0にすると稼働しているEC2は全て消えるが、起動設定は残っているため、再度キャパシティ数を1にすれば、同じ設定でEC2が起動する。


参考

AWS再入門2018 Amazon EC2 Auto Scaling編 | Developers.IO

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8