0
0

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のオートスケーリングをWEBサーバーで試してみた。

Posted at

オートスケーリングの大まかな流れ

EC2の起動時にWEBサーバーが実行されるsystemdのserviceを作成して、AMIにする。

AWSのオートスケーリングのテンプレート作成

Auto Scalingグループの作成

AMIの作成

ec2 を立ち上げる

t3.nanoを利用する場合はUnlimitedモード(クレジット仕様を無制限のチェックをON)になるように注意。
そうしないとホストのcpu利用率があがらないので、cpuが高負荷になった時にオートスケールできない。

ec2 に nginx と php-fpmのコンテナを作成

# docker と docker-compose を利用できるようにする。
sudo yum update -y && \
sudo amazon-linux-extras install  -y docker && \
sudo usermod -a -G docker ec2-user && \
sudo systemctl start docker.service && \
sudo systemctl status docker.service && \
sudo systemctl enable docker.service && \
sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose && \
sudo chmod +x /usr/local/bin/docker-compose && \
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# docker grop への追加を反映する
sudo su ec2-user

https://github.com/unamu1229/auto-scaling.git
こちらのファイルを /home/ec2-user/auto-scaling に展開してコンテナ起動。

curl -OL https://github.com/unamu1229/auto-scaling/archive/refs/heads/master.zip
unzip master.zip
cd auto-scaling-master
docker-compose up --build

SyetemdのService作成

/opt/docker-compose-up.sh

#!/bin/bash
docker-compose -f /home/ec2-user/auto-scaling-master/docker-compose.yml up -d
sudo chmod +x docker-compose-up.sh

/etc/systemd/system/docker-compose-up.service

[Unit]
Description = docker-compose up

[Service]
ExecStart = /opt/docker-compose-up.sh
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target
sudo systemctl enable docker-compose-up

ec2を再起動してブラウザからアクセスしてレスポンスが帰ってくるか確認。

イメージ名 docker-compose-up でAMIを作成

起動テンプレートの作成

https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/GettingStartedTutorial.html#gs-create-lt
の手順を参照。
テンプレート名template-docker-compose-upで作成する。
使用するAMIの項目で先程のdocker-compose-upのAMIを選択する。
「起動設定を作成するには」の項目の対応は必要ありません。

Auto Scalingグループの作成

ステップ1の起動テンプレートで、先程のtemplate-docker-compose-upを選択する。

ステップ3 詳細オプションを設定の内容

Internet-facingを選ばないとロードバランサーにvpc外からアクセスできないので注意。
screencapture-ap-northeast-1-console-aws-amazon-ec2autoscaling-home-2021-06-25-08_03_45.png

ステップ4 グループサイズとスケーリングポリシーを設定するの内容

screencapture-ap-northeast-1-console-aws-amazon-ec2autoscaling-home-2021-06-20-08_28_16.png

メトリックスに含める前にウォームアップする秒数をすくなくすると、負荷の増えた時にスケールアウトするまでの待ち時間が短くなります。負荷が減ってスケールインするまでの待ち時間には関係しませんでした。

ロードバランサーのエンドポイント

先程の設定でAuto Scalingグループを作成するとロードバランサーが作成されるのでリクエストを送るエンドポイントを確認する。
screencapture-ap-northeast-1-console-aws-amazon-ec2-v2-home-2021-06-25-08_43_55.png

負荷試験

Locustsを利用する。
https://docs.locust.io/en/stable/installation.html
の手順通りインストールして、
https://docs.locust.io/en/stable/quickstart.html
で起動。

設定内容

hostに先程のロードバランサーのエンドポイントを設定する、http://も必要。
スクリーンショット 2021-06-25 8.53.36.png

動作確認

負荷試験を実行して数分待つと、ec2インスタンスの起動数がグループサイズ設定の最大キャパシティ数まで増え、Auto Scaling グループのアクティビティでもLaunching a new EC2 instanceの履歴が作成されていました。
また、負荷試験を終了して数分待つと、起動数が希望する容量数まで減ることを確認できました。

参考url

ec2へdocker-composeの設定

systemd

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?