こんにちは。ロジカル・アーツの村下です。本記事ではAWS FISを使用したEBSへの停止処理を行い、疑似的にエラーを発生させる一連の流れを実践していきます。本記事ではFISの実験テンプレートの作成手順を解説します。(EC2の作成手順は省略します。)構成イメージは以下のようになります。
AWS FISとは?
AWSのリソースに対して障害を意図的に発生させるマネージドサービスです。システムに障害を挿入するテストケースを実践することができます。
例えばEC2インスタンスのCPUやメモリに対して負荷を与えることや、RDSのDBクラスターをフェイルオーバーすることができます。
EC2の制約事項について
AWS FISの仕様によりNitro System上のインスタンスにアタッチされたEBSボリュームのみ停止処理が行えます。本記事ではインスタンスタイプ「t3.micro」を使用しています。
他の考慮事項や制限事項は次の公式ドキュメントを参照してください。
Amazon EBS での障害テスト - Amazon Elastic Compute Cloud
実験テンプレート作成
実験テンプレートではアクションとターゲットを定義します。
AWSマネジメントコンソール上部の検索バーに「AWS FIS」と入力して検索し、「AWS FIS」を選択します。
「実験テンプレートを作成」を押下します。説明と名前ともに「stop-ebs」とします。
アクション
「アクションを追加」を押下します。
以下の表の内容を入力、選択してください。
項目名 | 値 |
---|---|
名前 | stop-ebs |
説明 | stop-ebs |
アクションタイプ#1 | EBS |
アクションタイプ#2 | aws::ebs:pause-volume-io |
Duration | 30分 |
上記以外のところはそのままにします。
右上の「保存」を押下します。
ターゲット
Volumes-Target-1が作成されていると思うので編集を行います。下のターゲットのあたりまでスクロールして作成されたターゲットの「編集」を押下します。
リソースIDに先ほど作成したEC2インスタンスに紐づけられているボリュームを選択します。
「保存」を押下します。
サービスアクセス、停止条件、ログ、タグはデフォルトのまま画面をスクロールし一番下の「実験テンプレートを作成」を押下します。
上記の画像のような注意文が出てきますが「作成」と入力し「実験テンプレートを作成」を押下します。
実験開始
作成した実験テンプレートの画面に遷移し、画面右上の「実験開始」を押下します。
以下の画像のような注意文が出てきますが「開始」と入力し、「実験を開始」を押下します。
実験の状態が「Running」になっていればEBSの停止処理が実行されています。
ボリューム停止の確認
AWSマネジメントコンソール上部の検索バーに「EC2」と入力して検索し、「EC2」を選択します。次に左のコンソールからボリュームを選択し、先ほど作成したインスタンスにアタッチされているボリュームのボリュームIDを選択します。
ステータスチェックを確認し、「障害」になっていればFISから停止処理が行われています。
※ボリュームのステータスチェックは5分毎に行われるため、ステータスへの反映は時間がかかります。詳しくは以下の公式ドキュメントを参照してください。
ボリュームのステータスのモニタリング - Amazon Elastic Compute Cloud
EBSの停止処理もう一つの方法
EBSのコンソール画面からもFISの実験テンプレートを作成することができます。AWS FISから実験テンプレートを作成する方法との相違点は、実験の名前を決定できないことや複数のEBSを選択して停止処理を行えないところがあります。
EC2の作成を行った後、左のコンソールからボリュームを選択し、先ほど作成したインスタンスにアタッチされているボリュームのボリュームIDを選択します。右上のアクション→フォールト挿入→ボリュームI/Oを一時停止の順で選択します。
AWS FISのコンソールに飛び、停止処理を行う時間を入力し、右下の「ボリュームI/Oの一時停止を選択します。
以降は本記事のボリューム停止の確認でボリュームに障害が発生していることを確認できます。
おわりに
AWS FISによるEBSへの停止処理を行いました。FISを使用するやり方ではEC2を停止せずにEBSだけに障害を発生させることができるので、障害テストを行う際などに生かせると思いました。ただしFISは1アクションにつき1分ごとに$0.1の料金が発生するため長時間の利用には注意が必要です。