今回はAWSの**「AutoScaling」** について学んだ事をアウトプットさせて頂きたいと思います。
##AutoScaling
AutoScalingとは、インスタンスを設定した上限に合わせて自動で数量を調整してくれるAWSのサービスになります。例えば、ユーザーアクセスをELBで2つのインスタンスに負荷分散をしていたとしても、イベント開催などで爆発的にユーザーのアクセスが集中してしまった場合などは、ELBだけでは対策することができません。EC2インスタンス自体の数量をアクセスに合わせて一時的に増加させる必要が出てきます。急なアクセス集中のためにサーバーが落ちてしまうなどが起きると企業にとっては大きな機会損失になります。
そのような自体を予め防止するためにAutoScalingがあったります。
###AutoScalingを作成するためには?
まずAutoScalingを作成するためには、起動テンプレートを設定する必要があります。
起動テンプレートは、「何のインスタンスを使うか?」を決めるものです。
具体的には「AMI」、「インスタンスタイプ」、「Key Pair」、「セキュリティグループ」はそれぞれどうするかと言ったものになります。
「AMI」や「インスタンスタイプ」など上記の単語についてイメージが沸かないという場合は、まずはこちらの記事を参考にしてみてください。
https://qiita.com/Shun-Hoso/items/a4824c3d9d15ebb86ae9
ちなみに起動テンプレート似たようなものとして、起動設定というものがあります。
起動テンプレートは、AutoScalingで使用するインスタンスのバージョン管理ができるのに対して、起動設定では別の設定ファイルとして管理する必要があり、AWS(2021年2月時点)では、起動設定よりも起動テンプレートが推奨されています。
起動テンプレートを作成した後は、いよいよAuto Scaling groupを設定します。
Auto Scaling groupでは、どの起動テンプレートを使用し、どこのサブネットにどの程度の数量を設置するかを指定するものになります。数量では、インスタンスの最小数、希望数、最大数などを設定します。
また、Auto Scaling groupではスケーリングポリシーというものを設定することができます。スケーリングポリシーとは、インスタンスを追加、削除する時の条件を設定するものと思って頂くと良いかと思います。
ではこのスケーリングポリシーの条件とは一体何を基準にしたら良いのでしょうか?
結論、AWSのCloudWatchのメトリクス(情報)を基準にしたら良いと思います。
**Auto Scaling groupを設定とCloudWatchは情報を紐付ける事ができます。**例えば、CloudWach側の設定でCPU使用率が70%以上を越えたらアラームを発信、CPU使用率が30%を下回ったらアラームを発信するなどの設定をしていた場合、こちらのアラーム発信に合わせて、Auto Scaling groupで定義していたスケーリングポリシーの内容が実施されるという事が可能になります。
また、Auto Scaling groupの設定はELBのターゲットグループと連携させることもできます。
ELBは、複数のインスタンスからどのインスタンスを使用するのが最適であるかを自動判断してくれるAWSのサービスになります。
ELBに関しては、以前こちらの記事を書きましたので宜しければ参考にしてみてください。
https://qiita.com/Shun-Hoso/items/17fae270f52eee3ffae7
###まとめ
Auto Scaling groupとは、インスタンスを設定した上限に合わせて自動で数量を調整してくれるAWSのサービスです。Auto Scalingを作成するためには、起動テンプレート「使用するインスタンス」の作成が必要になります。また、Auto Scaling group「何を基準にどこのサブネットにどのくらい設置するか」も合わせて設定もすることができ、こちらの設定をすることでCloudWach、ELBなどと連携することができます。
サーバーの負荷を軽減させるために、ELBの設定なども大切になりますが、それだけでは対応しきれないケースをあるので、Auto Scalingまで設定することでより安定稼働した状態でアプリケーションを公開することができます。
この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com