🧪

AWS FISを使ってAWS Auto Scalingの実験をする

2023/03/08に公開

はじめに

こんにちは、ヤマダです。以前にLTで発表した内容をせっかくなので記事にもしておこうと思い、投稿いたします。内容はAWS Fault Injection Simulatorを使用してAutoScalingの検証を行った際のお話です。

始まり

AWSでAuto Scaling Groupを設定する機会があったのですが、検証としてCPUに負荷をかけて実際にインスタンスが増減するかどうかを確認する必要がありました。

少し調べてみると、すぐによさそうな記事を発見しました。

CPUに負荷をかけてEC2 Auto Scalingを確認してみた
https://dev.classmethod.jp/articles/stress_test_ec2_auto_scaling/

書いてあることにザっと目を通し、「stress」コマンドを使用してCPUに負荷をかけることができると読み取った私はさっそくインスタンスに入ってコマンドを実行!

入っていない!!!!!!!

疑問点

このままインスタンスにインストールすることは容易いでしょう。しかし、この場は解決されたとして以下の疑問点が生まれました。

  • インストールは一瞬でも各インスタンスにいちいち入れるのか?
  • stressコマンドの実行を各インスタンスで行うのか?
  • ノートPCで作業しているので、画面が少ない。タブを切り替えまくることになるのか?
  • もしも希望するインスタンスの数が多ければどうするのか。
  • CDKで作成していたので、コードに書く?でも納品時は必要のないインストールはしたくない。

などなど。「stress」コマンドはインストールもされていないのに実行するだけで私に5のストレスを与えました。

どうしてもstressコマンドでやりたくなかったので、別の方法を探しているととあるサービスと出会いました。それがAWS Fault Injection Simulatorです。

AWS FIS(Fault Injection Simulator)とは

公式の記述は以下です。

AWS Fault Injection Simulator (FIS) は、フォールト挿入実験を実行するためのフルマネージドサービスであり、アプリケーションのパフォーマンス、オブザーバビリティ、および回復性を改善できるようにします。FIS は、さまざまな AWS のサービス全体でコントロールされたフォールト挿入実験をセットアップして実行するプロセスを簡素化するため、チームはアプリケーションの動作についての確信を深めることができます。
https://aws.amazon.com/jp/fis/

意図的に障害を発生させることができるとのことで、今回はAutoScalingGroupに対してCPU負荷をかけていきたいと思います。

前提条件

AutoScalingGroupのEC2インスタンスに対してCPU負荷をかけます。Scaleの発動条件はCPU負荷が全体で50%を超えている状態が続いたときに設定しています。また、使用するAutoScalingGroupの設定は以下です。

  • 最小・希望 2台
  • 最大 3台

つまり、高負荷状態で3台になって、負荷がなくなったら2台になれば実験成功です。

実験準備

AWS FISのページに移動し、実験テンプレートを作成します。実験のメインとなるアクションの設定や対象となるAutoScalingGroupの設定などなど。直感的に分かるような名称だったので、ノリで設定できました!

後程説明しますが負荷は「60%」、時間は「10分」に設定しています。

実験開始!

テンプレートを作成すると、「実験を開始」というなんともわくわくするボタンが活性化されます。
それではポチっといってみましょう。

実験を開始すれば特にこちらから必要なアクションはありません。のんびりとCloudWatchで状況を確認するだけです。待っていると徐々に負荷がかかってきて、とうとうアラーム状態になりました!ボタン1つ押すだけでCPU負荷がかかる、最高!


赤枠が今回の実験箇所

ザザッと割愛しますが、きちんとインスタンスが増減していました。AWS FISを利用することで簡単にAutoScalingの実験ができて万々歳です!

実験して分かったこと

実は今回の実験は2回目で成功しています。1回目の実験で失敗して分かったことを共有します。

注意点1:しきい値のテストは難しい

最初はギリギリを攻めようと思ってCPU負荷を50%に設定していました。しかし、安定した負荷をかけることは難しいようで48%~52%くらいでブレてしまい、AutoScaleは発動しませんでした。そこで少し多めの「60%」を設定して実験した次第です。


赤枠箇所で発動条件の50%のギリギリを攻めている

注意点2:実行時間について

1回目の実験時には5分を設定して実験をしようと思っていましたが、上記のブレがあったことも考えて少し長めの「10分」を設定しました。何度も失敗すると面倒なので、少し余裕を持った設定をするといいと思います。


赤枠箇所で3~5分の時間設定でギリギリを攻めている

まとめ

  • 設定も簡単で、楽に負荷テストができた!
  • 小規模な実験もできる!(今回の実験はほぼ最小なのでは)
  • 分単位での料金設定なので安心して実験できる!
  • アイコンがかわいい!

少し雑なまとめですが、素直な感想です。ノートPCで実施しましたが、タブ切り替えを多用することもなく、検証用の画像を取得するのも楽で助かりました。また、インスタンスの数が増えてもAWS FISであれば同じような設定で実験できると思います。

今までなかなか好きなサービスと言えるものが見つかりませんでしたが、今回の実験でAWS FISのことをとても好きになりました。初めて純粋な興味からサービスを好きになれたので、これから他の使い方も試して実験大好き野郎を目指したいと思います!

ここまで読んでいただきありがとうございました🙇‍♂️

Discussion