4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

はじめてのAuto Scaling

Posted at

Auto Scalingとは?

EC2を利用して、自動的にサーバを増減してパフォーマンスを最適化してくれるサービスです。
詳細は こちら をごらんください

概要

  • 目次
  1. AMIを作成
  2. ターゲットグループの作成
  3. ロードバランシングの作成
  4. Auto Scalingの起動設定を作成
  5. Auto Scalingグループの作成
  6. テスト
  • イメージ図

ALBはAZが複数必要なので2つ作成しました。

1# はじめてのAuto Scaling - diagrams.net - Google Chrome.png

作成

1. AMIを作成

  • EC2インスタンスを作成

とりあえずAmazonlinuxのt2.microでEC2インスタンスを作成しました。

  • httpdの設定
sudo su -
yum install httpd
systemctl start httpd
systemctl enable httpd

vi /var/www/html/index.html
==========
<h1>hello world!!!!</h1>
==========
  • ブラウザからwebサイトが見えることを確認

http://[IPアドレス]/index.html

0Mozilla Firefox 2021-04-06 23.17.59.png

  • EC2インスタンスのイメージを作成

設定を行った、EC2インスタンスにチェックをいれて
アクション > イメージ > イメージの作成 からAMIを作成する

0インスタンス _ EC2 Management Console - Google Chrome 20.png

  • AMIの設定

イメージ名と説明を入れて作成を行います

00インスタンス _ EC2 Management Console - Google Chrome 20.png

  • 作成中

ステータスがpendingになっています

000AMI _ EC2 Management Console - Google Chrome 2021-.png

  • 作成完了

ステータスがavailableになりました

0000AMI _ EC2 Management Console - Google Chrome 2021-.png

2. ターゲットグループの作成

  • 移動

EC2 > ロードバランシング > ターゲットグループ からターゲットグループの作成を行います

1Target groups _ EC2 Management Console - Google Ch.png

  • ターゲットグループの作成

ターゲットグループ名とターゲットの種類、
またヘルスチェックのパスを先ほど作成した /index.html に指定します

2ターゲットグループ _ EC2 Management Console - Google Chrome.png

  • ターゲットグループが作成されました

3ターゲットグループ _ EC2 Management Console - Google Chrome.png

3. ロードバランシングの作成

  • 移動

EC2 > ロードバランシング > ロードバランサー からロードバランサーの作成を行います

4ロードバランサー _ EC2 Management Console - Google Chrome.png

  • ロードバランサーの種類

今回はwebサーバを作成してロードバランシングしたいので、ALBを作ります

5ロードバランサーの作成 _ EC2 Management Console - Google Chro.png

  • ロードバランサーの設定

ALBはAZが2つ必要なので、2つ設定します。

6ロードバランサーの作成 _ EC2 Management Console - Google Chro.png

  • セキュリティ設定

↑でリスナーを443(https)にしていたらこちらで証明書などの設定が必要なのですが、
今回はAutoScalingがメインなので80番ポートで通信させます

7ロードバランサーの作成 _ EC2 Management Console - Google Chro.png

  • セキュリティグループの設定

ALBに来るアクセスに対してのセキュリティグループの設定です。
一旦、今あるものをここでは使ってますが、
80番ポートがあいていればOKです

8ロードバランサーの作成 _ EC2 Management Console - Google Chro.png

  • ターゲットグループの設定

先程作成したターゲットグループを選択します。
するとグレーアウトになっている部分はデフォルトで入ります。

9ロードバランサーの作成 _ EC2 Management Console - Google Chro.png

  • ターゲットの登録

通常であればターゲット(インスタンス)が存在していれば登録が出来るのですが、
現在はまだ出来ていないので登録できません

10ロードバランサーの作成 _ EC2 Management Console - Google Chro.png

  • 確認

作成したALBの設定が認識通りか確認してください

11ロードバランサーの作成 _ EC2 Management Console - Google Chro.png

  • 作成完了

ALBが作成されました

12ロードバランサー _ EC2 Management Console - Google Chrome.png

4. Auto Scalingの起動設定を作成

  • 移動

EC2 > AUTO SCALING > 起動設定 から起動設定の作成を行います

13EC2 Management Console - Google Chrome 2021-04-06.png

  • 起動設定の作成

起動名はわかりやすいものを。
AMIは 今回は一番最初に作成したEC2インスタンスのAMIを使います
インスタンスタイプは t2.micro

14EC2 Management Console - Google Chrome 2021-04-06.png

追加設定は特に何もせず、デフォルトのままいきます

15EC2 Management Console - Google Chrome 2021-04-06.png

セキュリティグループは現在あるものを使用し、キーペアも今あるやつを使いました。
ここらへんはEC2などでも設定するので何も触らず進めます

16EC2 Management Console - Google Chrome 2021-04-06.png

  • 起動設定が完了しました

17EC2 Management Console - Google Chrome 2021-04-06.png

5. Auto Scalingグループの作成

  • 移動

EC2 > AUTO SCALING > AutoScalingグループ からAutoScalingグループの作成を行います

18EC2 Management Console - Google Chrome 2021-04-06.png

  • 起動設定の選択

AutoScalingグループ名を記載します。
また、起動設定に切り替えて先ほど作成した起動設定を選択します

19EC2 Management Console - Google Chrome 2021-04-06.png

  • 設定の構成

VPCはALBをおいたVPC。
また、サブネットもALBで設定した2つのAZのサブネットを記載します

20EC2 Management Console - Google Chrome 2021-04-06.png

  • 詳細オプションを設定

ロードバランシングは↑ですでに作成しているので、既存のロードバランサーにアタッチします。
また、ターゲットグループも作成しているので、既存のロードバランサーターゲットグループにアタッチを行います。
ほかはデフォルトで行きます

21EC2 Management Console - Google Chrome 2021-04-06.png

  • グループサイズとスケーリングポリシー

スケーリングしてもらいたいので、グループサイズの最大キャパシティとスケーリングポリシーを変更しました

22EC2 Management Console - Google Chrome 2021-04-06.png

  • 通知設定

通知はさせないので、設定しません。

23EC2 Management Console - Google Chrome 2021-04-06.png

  • タグ設定

タグも必要ないので設定しません

24EC2 Management Console - Google Chrome 2021-04-06.png

  • 確認

今の設定が問題ないことを確認して設定を作成します

25EC2 Management Console - Google Chrome 2021-04-06.png

  • 作成完了

作成出来ました

26EC2 Management Console - Google Chrome 2021-04-06.png

  • ELBへのヘルスチェックも確認します

EC2 > ロードバランシング > ターゲットグループ > Autoscaling-ALB-TargetGroup > ターゲット から
ターゲットの確認ができます。
ターゲットが healthy になってることを確認します

27ターゲットグループ _ EC2 Management Console - Google Chrome.png

  • 接続確認

本来なら、Route53にALBを紐付けて・・・みたいなことをしたいのですがそこまで用意できなかったので、
localのサーバでALBのIPを確認し、それに対してブラウザで表示できるか確認します

EC2 > ロードバランシング > ロードバランサー > Autoscaling-ALB > 説明 のDNS名をコピーします。
そのDNS名をlocalのサーバで以下のように確認すると、IPアドレスが出てきます。

dig [DNS名] +short
==========
xx.xx.xx.xx
xx.xx.xx.xx
==========

↑で出てきたIPアドレスをコピーしてブラウザから
http://[IPアドレス]/index.html で確認します。
下記のように表示できたらOKです。

28Mozilla Firefox 2021-04-07 00.07.09.png

6. テスト

AutoScalingは負荷がかからないと台数が増えないので
内部でCPUを使うように適当なスクリプト作成します

  • AutoScalingグループで確認

台数が3台になっています。

29EC2 Management Console - Google Chrome 2021-04-07.png

  • EC2インスタンスで確認

同じく新しいサーバが2台増えています

30インスタンス _ EC2 Management Console - Google Chrome 20.png

  • ターゲットグループで確認

ターゲットグループ配下にいるサーバが3台に増えました

31ターゲットグループ _ EC2 Management Console - Google Chrome.png

負荷をかけるとサーバが増えることを確認できました。

勉強後のイメージ

結構セキュリティグループとかヘルスチェックとかでつまづいたりした。
画像がもしかしたらちぐはぐな所あるかもですが、いい感じに読み替えてください。
なんとなくイメージはわかってたけど、ちゃんと増えるんだなってのはわかってよかった。

4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?