あなたのAWSインスタンスの負荷と受信トラフィックを監視するのにうんざりですか? Terraform Autoscaling Groups をデプロイしてすべてを自動化してみてはどうでしょうか? オートスケーリングにより、低い負荷時には一部のサーバーをスリープさせ、高い負荷時にはサーバーを追加することができ、企業の電力コストを節約できます。
このチュートリアルでは、Terraformを使用してAutoscaling Groupsを構築し、Terraformでデプロイする方法を学びます。
続けて、インスタンスのゼロダウンタイムを実現しましょう!
前提条件
この投稿はステップバイステップのチュートリアルになります。一緒に進む場合は、以下を確認してください:
- Amazon Web Service(AWS)アカウント。
- A code editor – Even though you can use any text editor to work with Terraform configuration files, consider using Visual Studio (VS) Code as it understands the HCL Terraform language well.
- Terraform – このチュートリアルではTerraform v1.1.5をUbuntu 20.04 LTSで実行していますが、Terraformが動作する任意のオペレーティングシステムでも構いません。
AWS Autoscaling GroupのTerraform構成を構築する
Terraformコマンドを実行してインフラストラクチャを構築・デプロイする前に、Terraform構成ファイルを作成する必要があります。AWSアカウント内でAWS Auto Scaling グループを作成するためのTerraform構成を構築します。
1. 好きなSSHクライアントを使用してマシンにログインします。
2. 次に、~/terraform-autoscaling-demoという名前のフォルダを作成し、そのフォルダを作業ディレクトリに変更します(cd
)。このフォルダには、このチュートリアルで作業するすべての構成ファイルが含まれます。
3. 好きなコードエディタを開き、次の構成をコピー/貼り付けて、ファイルをmain.tfとして保存します。このmain.tfファイルはAuto ScalingグループのTerraform構成です。
以下のコードはAuto Scaling Launch Configuration(web_config
)を作成し、Auto Scalingグループ(autoscalegroup
)をプロビジョニングします。Auto Scalingグループにはそのコンポーネントも含まれます(aws_autoscaling_schedule
およびaws_autoscaling_policy
)。
4. ~/terraform-autoscaling-demoに別のファイルを作成してください。provider.tfという名前のファイルを作成し、以下の内容を記述してください。このprovider.tfファイルは、AWS、Oracle、Azureなどのプロバイダを定義します。この設定ファイルにより、Terraformを適切なクラウドサービスに接続できます。
このチュートリアルでは、us-east-1リージョンにリソースを作成します。ただし、AWSがサポートするリージョンのリストを見つけることができます。
5. 最後に、以下のtree
コマンドを実行して、プロジェクトフォルダ(~/terraform-autoscaling-demo
)に必要なすべてのファイルが存在することを確認してください。

Terraform構成でAWS Autoscalingグループを作成する
これで、Terraform構成ファイルと変数ファイルを正しく設定したので、Terraformを初期化してAWS Autoscalingグループを作成する準備が整いました。
AWS Autoscalingグループをプロビジョニングするには、他のすべてのTerraform構成と同様に、Terraformは3つのコマンドをシーケンスで使用します(terraform init
、terraform plan
、そしてterraform apply
)。
1. 〜/terraform-autoscaling-demo ディレクトリで terraform init
コマンドを実行します。このコマンドは、リソースを操作するために必要なプラグインとプロバイダを初期化します。
すべてがうまくいくと、以下に示すように、Terraform が正常に初期化されたというメッセージが出力されます。

2. 次に、terraform plan
コマンドを実行して、構成ファイルの構文が正しいことを確認し、インフラストラクチャにプロビジョニングされるリソースの設計図を取得します。
成功した場合、以下に示すようなプランが表示されます。

3. 最後に、terraform apply
コマンドを実行して、トレーニングホイールを外し、AWS AutoScaling グループを作成します。
このコマンドは、Terraform に各構成(*.tf)を読み込んで AWS に送信する状態をコンパイルするよう指示します。Terraform はそれから AWS Autoscaling グループおよびその他のコンポーネントを構築します。
AWS Auto Scaling に追加料金はかかりません。アプリケーションを実行するために必要な AWS リソースのみが必要です。

AWS Cloud で AWS Auto Scaling グループを検証する
これで、Terraform で AWS Auto Scaling グループと関連コンポーネントを作成することができました。しかし、それらが AWS クラウドに存在するかどうかをどのように確認しますか? AWS Management Console で手動で確認して、Auto Scaling グループを検証します。
1. 好きなウェブブラウザを開き、AWS Management Console にログインします。
2. コンソールのホームページで、検索ボックスをクリックし、「EC2」を検索して、EC2ダッシュボードにアクセスしてください。
EC2ダッシュボードで「AWS Auto Scaling グループ」メニューアイテムをクリックして、Auto Scaling グループを管理します。
以下はAuto Scalingの設定を使用してEC2ダッシュボードでAWS EC2インスタンスの希望する数が起動されます。

3. 最後に、EC2ダッシュボードで「AWS Auto Scaling Launch Configuration」をクリックします。以下に示すように、Auto Scalingの起動構成(web_config)が表示されます。

ロードテストでEC2インスタンスをAuto Scaling
Auto Scalingグループ/ポリシーおよび関連コンポーネントが正しく設定されていることを確認したら、Auto Scalingの機能が正常に動作するかどうかをテストする時がきました。方法は?AutoScalingグループで最近起動したインスタンスに負荷を追加することで確認できます。
1. SSHクライアントを使用してAuto Scalingグループで起動したAWS EC2インスタンスを開いてください。
2. 次に、ターミナルを開き、以下のコマンドを実行してload stress tool
(stress-ng
)をインストールしてください。stressツールを使用すると、Ubuntuマシンにストレスを定義および生成できます。
市場で利用可能な他の負荷テストツールも見つけることができます。

3. 以下のstress-ng
コマンドを実行して、インスタンスに負荷を生成してください。
以下のコマンドには、以下のフラグが含まれています:
--cpu
– 負荷が生成されるコア数を示します。
-v
– 冗長モードを有効にします。
--timeout
– 負荷が生成される時間を指定します。

4. 以下のtop
コマンドを実行して、Linuxプロセスを表示します。
以下では、負荷がインスタンスに生成された後にCPUが急上昇することがわかります。

5. AWS CloudWatchサービスに移動してください。AWS Cloud上でアラームが生成され、CPUが(10%)を超えたことが通知されます。アラームは、自動スケーリンググループにインスタンスの数を1から2にスケールするよう指示します。

6. 最後に、EC2ダッシュボードのインスタンスに移動して、AWS EC2インスタンスを確認します。
1つのインスタンスが起動されたことがわかります。これにより、AWS Autoscalingグループとそのコンポーネントのセットアップが成功したことが確認できます。

以下のように、AWS AutoScaleグループのアクティビティで自動スケーリングのアクティビティも確認できます。

結論
このチュートリアルでは、Terraformを使用してAWS Autoscalingグループとそのコンポーネントをデプロイする方法について学びました。AWS Autoscalingグループを使用して自動スケーリングアプリケーションを構築すると、必要に応じてスケーリングできるため、素早くタスクを完了できます。
{
“error”: “Upstream error…”
}
Source:
https://adamtheautomator.com/terraform-autoscaling-group/