0
1

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.

【AWS Auto Scaling】ELBの組み合わせたオートヒーリング構築)

Last updated at Posted at 2020-06-02

##目標
ELBとAutoScalingを組み合わせ、障害時にもバックエンドインスタンス数を維持する仕組みを構築する(いわゆるオートヒーリングのみで、トラフィックに応じたスケールイン・アウトの仕組みは構築しない)

##前提
ELB、及びそれに紐づくターゲットグループを構築済みであること(※)

※以下記事で作成を実施済み
【ELB基本設定】 ELBを作成し、httpアクセスをロードバランシングする

##手順
###1. 起動設定(Launch Configuration)作成
EC2コンソールの左枠にある起動設定をクリック後、起動設定の作成実行
tempsnip.png
tempsnip.png
②AMIの選択、インスタンスタイプの選択を行う
③起動設定(Launch Configuration)の詳細設定を行う

<設定内容>
名前: 任意
ユーザデータ: httpd自動起動用スクリプト(※下部記載)
アドレスタイプ: パブリック IP アドレスを各インスタンスに割り当てます。(※複数サブネットでのELB負荷分散を行っていない場合、デフォルト設定のままでOK)
それ以外: デフォルト設定
tempsnip.png
※httpd自動起動用スクリプト


#!/bin/bash
yum update -y
amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
yum install -y httpd mariadb-server
systemctl start httpd
systemctl enable httpd
usermod -a -G apache ec2-user
chown -R ec2-user:apache /var/www
chmod 2775 /var/www
find /var/www -type d -exec chmod 2775 {} \;
find /var/www -type f -exec chmod 0664 {} \;
echo `hostname` > /var/www/html/index.html

③セキュリティグループの設定
http80番ポートが開いているセキュリティグループを利用(httpをロードバランシングさせているため。通信内容に応じて設定は変わる)
tempsnip.png

④設定内容確認後、起動設定の作成をクリック
tempsnip.png

⑤キーペアの設定を行う
⑥正常に起動設定が作成されていることを確認
キャプチャ.PNG

###2. Auto Scalingグループの作成
①Auto Scalingグループの作成をクリック
tempsnip.png

②新しく作成するAuto Scalingグループと起動設定を紐づかせる
前述の手順で作成した起動設定にチェックを入れ、次のステップへ
tempsnip.png

③Auto Scalingグループの詳細設定を行う
<設定内容>
グループ名: 任意
グループサイズ: 任意(Auto Scaling開始時のグループ内における希望インスタンス数を設定)
ネットワーク: ELBが存在するVPCID
サブネット: ELBの振り分け先として指定されているサブネットID
ロードバランシング : ひとつまたは複数のロードバランサーからトラフィックを受信する
ターゲットグループ: 対象ELB配下のターゲットグループ
ヘルスチェックタイプ: ELBにチェック

tempsnip.png

tempsnip.png

④スケーリングポリシーの作成
今回はインスタンスを維持することのみが目標のため「このグループを初期のサイズに維持する」にチェック
tempsnip.png

⑤通知の設定(任意)
必要あれば通知設定を行う(指定したイベント発生時、メール通知がくるようになります)
tempsnip.png

⑥タグの設定(任意)(※)
※「新しいインスタンスにタグ付けする」にチェックを入れると、AutoScalingによって起動されたインスタンス全てに自動でタグが付きます
キャプチャ.PNG

⑦設定内容確認後、Auto Scalingグループの作成をクリック
tempsnip.png

⑧作成したAuto Scalingグループが作成されていること、及びグループのインスタンスのヘルスステータスが「Healthy」であることを確認
tempsnip.png

⑨ロードバランサーのターゲットグループにも、Auto Scalingによって起動されたインスタンスが存在していることを確認
tempsnip.png

###3. 動作検証(オートヒーリングの確認)
①AutoScaling内のインスタンスにログインし、httpdを停止する

[root@ip-172-31-39-108 ~]# systemctl stop httpd
[root@ip-172-31-39-108 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset                                                                             : disabled)
  Drop-In: /usr/lib/systemd/system/httpd.service.d
           mqphp-fpm.conf
   Active: inactive (dead) since Tue 2020-06-02 11:12:08 UTC; 1min 21s ago
     Docs: man:httpd.service(8)
  Process: 3616 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, st                                                                             atus=0/SUCCESS)
 Main PID: 3616 (code=exited, status=0/SUCCESS)
   Status: "Total requests: 68; Idle/Busy workers 100/0;Requests/sec: 0.0687; By                                                                             tes served/sec:  33 B/sec"

Jun 02 10:55:26 ip-172-31-39-108.ap-northeast-1.compute.internal systemd[1]: ...
Jun 02 10:55:27 ip-172-31-39-108.ap-northeast-1.compute.internal systemd[1]: ...
Jun 02 11:12:07 ip-172-31-39-108.ap-northeast-1.compute.internal systemd[1]: ...
Jun 02 11:12:08 ip-172-31-39-108.ap-northeast-1.compute.internal systemd[1]: ...
Hint: Some lines were ellipsized, use -l to show in full.

②httpdを停止したインスタンスが終了しても、Auto Scalingグループ内のインスタンス数が維持されることを確認
tempsnip.png
⇒インスタンスが2つヘルスチェックに失敗し、終了中となってるが、グループ内インスタンス数は4つ維持されているためOK

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?