技術検証：Amazon EC2 Auto Scalingを活用したスケーリング設定とインスタンス起動の実践的な手順

## はじめに
普段、AWSの学習やEC2環境の構築をしている中で、Auto Scalingを使用する機会はあまりありませんでした。

:::note 
**仕組み自体については理解しているものの、実際にサーバーに負荷をかけてスケールの動作を確認したことはありませんでした。**
:::

そこで今回は、スケール動作を検証することを目的にAuto Scalingを試してみようと思います。

***なお、この内容は自分への備忘録を兼ねた最低限の検証であり、今回は指定した時間にスケールする設定としています。***

## Amazon EC2 Auto Scalingとは？
Auto Scalingとは、サーバーの負荷に応じてサーバー台数を自動で調整する機能です。

![スクリーンショット 2024-12-01 19.45.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/a9100dce-9bf1-3fd3-ac18-5e4f97626520.png)
引用画像：https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html

Webアプリケーションやサービスの規模に応じた柔軟なリソース管理を可能にし、システムの安定性を保ちながらコスト削減も期待できます。

https://aws.amazon.com/jp/ec2/autoscaling/

### 主なメリット
Auto Scaling には、以下のようなメリットがあります。

:::note warn
- **負荷に強いシステムの構築**：アクセス集中時でもサービス停止を防止。
- **コスト最適化**：必要なリソースだけを利用することで無駄なコストを削減。
- **運用の自動化**：サーバーの増減を自動化し、運用負担を軽減。
:::

例えば、アクセスが急増してサーバーの負荷が高まった場合には新しいサーバーを追加し、アクセスが減少した場合には不要なサーバーを削除します。

***このように、負荷に応じたリソース管理が可能です。***

## 実際にやってみた
ここでは、過去のブログで構築した最低限のWebサーバーをベースに検証を進めます。

:::note
**Terraformを使い、パブリックサブネットにEC2インスタンスを構築し、Apacheを導入済みの構成となります。**
:::

詳細な構築手順については以下のブログを参照してください。

https://qiita.com/free-honda/items/7770f57db0b9e619cfb4

### 1. テンプレート用AMIの取得
まず、AWSマネジメントコンソールにログインし、対象のインスタンスからAmazonマシンイメージ（AMI）を作成します。

画面上部の「アクション」タブを開き、「イメージとテンプレート」→「イメージを作成」を選択します。

![スクリーンショット 2024-12-01 18.56.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/77705012-ec36-81bc-f75b-60e97f6153c7.png)

次に、任意の名前（例：「terraform-apache-ec2」）を入力し、「イメージを作成」ボタンをクリックします。

![スクリーンショット 2024-12-01 18.58.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/116a2933-21c4-6bba-a8f5-ebf8d86912a8.png)

:::note alert
***補足：AWSの推奨事項として、AMIを作成する際は対象インスタンスを停止した状態にすることが推奨されています。***
:::

### 2. 起動テンプレートの作成
次に、Auto Scaling グループで使用する起動テンプレートを作成します。

対象のEC2インスタンスのアクションボタンから「起動テンプレートの作成」をクリックして進めます。

![スクリーンショット 2024-12-01 19.04.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/98fa849d-6058-b74e-34aa-8d8a455d7d1c.png)

ここでは、先ほど作成したAmazonマシンイメージを選択します。

その他のインスタンスタイプやキーペア、ネットワーク設定については、既存のEC2インスタンスと同じ設定で進めていきます。

![スクリーンショット 2024-12-01 19.06.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/b724f351-1e9d-8a21-563e-56b65b4c5b1b.png)

ここまでの設定に問題がなければ、右側の「起動テンプレートを作成」ボタンをクリックします。

![スクリーンショット 2024-12-01 19.08.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/995a5b2d-b019-785d-bc92-b96e7b2e112c.png)

問題なく、起動テンプレートが作成されていることが確認できました。

### 3. Auto Scaling グループの作成
ここまでの設定が完了したら、実際にAuto Scaling グループを作成します。

EC2ダッシュボードから「Auto Scaling グループの作成」を選択します。

![スクリーンショット 2024-12-01 19.00.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/1c333345-3b7f-933d-8755-4638bf437301.png)

Auto Scaling グループ名を入力し、先ほど作成した起動テンプレートを選択します。

![スクリーンショット 2024-12-01 19.12.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/28085180-6bb7-3284-80cf-ac8e4a25a893.png)

インスタンス起動オプションの選択画面では、作成したVPCとアベイラビリティーゾーン、サブネットを選択します。

![スクリーンショット 2024-12-01 19.14.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/142a58b9-2c7d-017a-d251-a08119096924.png)

アベイラビリティーゾーンのディストリビューションについては、「バランシング」を選択しています。

その後の設定は省略可能なため、スキップして進めることができました。

![スクリーンショット 2024-12-01 19.17.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/d1d05ff0-76fe-93c6-265e-28be1d508bd3.png)

最後に、設定内容に問題がなければ「Auto Scaling グループを作成」ボタンをクリックして作成を完了します。

### 4. 予定されたアクションの作成
設定した時間にスケールするよう、予定されたアクションを作成します。

![スクリーンショット 2024-12-01 19.28.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/08a2ddb5-530c-7064-dfe8-e486fa858a33.png)

詳細な設定画面は以下の通りです。ここでは、最大2台のインスタンスを起動するように設定しています。

![スクリーンショット 2024-12-01 19.26.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/12f93c9d-b465-0bc5-2b24-e9a4fb5262d8.png)

## Auto Scaling設定後の確認

ここまでの設定が完了したら、EC2インスタンス画面でサーバーが起動していることを確認します。

![スクリーンショット 2024-12-01 19.31.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/b5383fd8-ddab-29d2-1028-2f5d5b6f61e7.png)

無事、2台のサーバーが起動していることが確認できました。これで検証は大成功です！

最後に、EC2のパブリックIPアドレスを使ってブラウザでアクセスし、動作を確認します。


![スクリーンショット 2024-12-01 19.32.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/68d0eefa-8144-fbd1-de95-127025771656.png)

問題なく、起動した2台のサーバーのパブリックIPアドレスで正常にアクセスでき、Apacheの簡易的なHTMLファイルが表示されることを確認しました。

![スクリーンショット 2024-12-01 19.33.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/62265e5a-1638-2bac-a1bb-d8e10c75df2c.png)

## まとめ

Auto Scaling グループは、AWSコンソール上で簡単に設定できるため、運用負担を軽減しつつ、効率的なリソース管理を実現できます。

:::note warn
**今回は初めての検証だったため、少し時間がかかってしまいましたが、最終的には想定通りの挙動を確認でき、めちゃくちゃ嬉しかったです！**
:::

この技術検証が、誰かの技術の支えとなれば幸いです！

## 参考記事

https://blog.serverworks.co.jp/aws-auto-scaling

https://dev.classmethod.jp/articles/introduction-2024-amazon-ec2-auto-scaling/

https://blog.serverworks.co.jp/2023/03/09/122924