AWS Fault Injection SimulatorでEC2のCPU負荷テストを実行してみる
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは、アノテーションのなかたです。
今回はAWS Fault Injection SimulatorでEC2インスタンスに負荷テストシナリオを実行してみました。
AWS Fault Injection Simulator(AWS FIS)とは?
アプリケーションやアーキテクチャの回復性や障害性の向上を図るため、意図的に障害をシミュレーションすることができるサービスです。
次のようなシナリオが事前に用意されています。
- EC2インスタンスのCPU使用率負荷
- AZの電源遮断
AWSFIS-Run-CPU-Stressシナリオ
このシナリオでは、stress-ngという負荷テストツールを用いて、EC2インスタンスに高い負荷をかけます。
前提条件
対象のEC2インスタンスには、以下の要件が必要です。
-
インストールされているSSMエージェント
SSMエージェントがプリインストールされているAmazon Linux 2023というAMIを使用します。
そのため、手動でのインストールは不要です。 -
SSMManagedInstanceCoreポリシー
AWS FISがSessionManagerを利用してテストを行うための前提です。
事前にIAMロールを作成しておきます。 -
stress-ngツール
パブリックサブネットにEC2インスタンスを配置し、インターネットを介したインストール方法を採用します。 -
Ec2StressCpuタグ
EC2インスタンスに付与する指定のタグと値を付与します。 -
FIS実行ロール
今回は、自動作成されるロールを使用します。
やってみる
1. IAMロールの作成
事前にSSMManagedInstanceCoreポリシーが付与されたIAMロールを作成しておきます。
2. 実験用のEC2インスタンス作成
次のようにタグをつけます。
キー:Ec2StressCpu
値:Allowed

IAMインスタンスプロフィールに先ほど作成したIAMロールを割り当てます。

インスタンスを起動します。
3. 実験テンプレートの作成
シナリオからテストを作成を選択します。

EC2ストレス:CPUを選択し、シナリオ使用してテンプレートを作成というボタンを選択します。

このAWSアカウントを選択します。

サービスアクセスにて、実験テンプレート用の新しいロールを作成するを選択します。

またタグの設定において、タグの値がデフォルトで日本語で自動挿入されていました。
しかし、エラー表示されていたので適当な名前に変更します。

実験テンプレートを作成ボタンを選択します。
実験テンプレートの作成が完了しました。

4. 実験の開始
ターゲットのタブのプレビューを作成ボタンを選択します。

これにより、対象となるインスタンスを事前に確認することが可能です。

それでは実験を開始します。
上部の実験を開始ボタンを選択します。

そのまま実験を開始ボタンを選択します。

アクションが開始されました。

15分待機すると、全てのアクションが完了しました。

対象となるEC2インスタンスのCPU使用率メトリクスを確認します。
画像のように、時間をかけて負荷がかかっていることがわかります。

ちなみに、他のメトリクスは以下のようになっていました。

おわりに
AWS FISを利用して、EC2インスタンスのCPU負荷テストを行うことができました。
前提条件をしっかりとクリアすれば、手順であまりつまづくことはない印象でした。
また、今回のシナリオの活用例として、以下の記事が参考になると思います。
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。







