AWS Fault Injection SimulatorでEC2のCPU負荷テストを実行してみる
はじめに
こんにちは、アノテーションのなかたです。
今回は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 テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。