

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EBS での障害テスト
<a name="ebs-fis"></a>

AWS Fault Injection Service (AWS FIS) は、 AWS ワークロードでフォールトインジェクション実験を実行するのに役立つフルマネージドサービスです。EBS アクションを使用すると AWS FIS、アプリケーションが I/O の中断やボリュームのパフォーマンスの低下につながるストレージ障害にどのように応答するかをテストできます。この制御されたテスト環境により、アプリケーションが中断にどのように応答するかを観察できるため、アーキテクチャの弱点を特定し、アプリケーションの全体的な耐障害性を向上させることができます。I/O 一時停止アクションとレイテンシーインジェクションアクションを使用して、Amazon CloudWatch アラームとフェイルオーバーワークフローなどのモニタリングおよび復旧メカニズムをテストし、ミッションクリティカルなアプリケーションのストレージ障害に対する耐障害性を向上させることができます。詳細については AWS FIS、[AWS Fault Injection Service 「 ユーザーガイド](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)」を参照してください。

## 利用可能な実験
<a name="ebs-fis-experiments"></a>

Amazon EBS は現在、2 つの AWS FIS フォールトインジェクションをサポートしています。
+ [I/O フォールトインジェクションを一時停止する](ebs-fis-pause-io.md)
+ [レイテンシーインジェクション](ebs-fis-latency-injection.md)

## 考慮事項
<a name="ebs-fis-consids"></a>

以下の考慮事項に注意してください。
+ すべての Amazon EBS ボリュームタイプがサポートされています。ルートボリュームとデータボリュームの両方がサポートされます。インスタンスストアボリュームはサポートされていません。
+ ボリュームは [Nitro ベースの EC2 インスタンス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#instance-hypervisor-type)にアタッチする必要があります。
+ 期間に基づいて実験が完了すると、ボリュームは元の I/O パフォーマンスを再開します。実行中の実験は、完了する前に停止することもできます。または、CloudWatch アラームで定義したしきい値に達した場合に実験を停止するように停止条件を作成することもできます。
+ マルチアタッチが有効なボリューム AWS FIS では、 を使用できます。アタッチされたインスタンスのすべてが影響を受けます。実験用に特定のボリュームとインスタンスのアタッチメントを選択することはできません。
+ FIS は現在、ローカルゾーン、Outposts、または Wavelength ゾーンでは使用できません。
+ コンソールでボリューム ARN を指定するとき、同じアベイラビリティーゾーンで最大 5 つのボリュームを同時にテストできます。
+  AWS FIS は、 、 AWS Wavelength ゾーンOutpost、またはローカルゾーンで作成されたボリュームでは使用できません。

# I/O フォールトインジェクションを一時停止する
<a name="ebs-fis-pause-io"></a>

 AWS Fault Injection Service および I/O 一時停止アクションを使用して、Amazon EBS ボリュームとそれがアタッチされているインスタンス間の I/O を一時的に停止し、ワークロードが I/O 中断を処理する方法をテストします。

詳細については AWS FIS、[https://docs.aws.amazon.com/fis/latest/userguide/what-is.html](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)」を参照してください。

**考慮事項**

ボリュームの I/O を一時停止する場合は、以下の考慮事項に留意してください。
+ I/O の一時停止は、すべての [Nitro ベースのインスタンスタイプ](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html)でサポートされています。
+ OS タイムアウト設定をテストするには、実験時間を `nvme_core.io_timeout` に指定された値以上に設定します。詳細については、「[Amazon EBS ボリュームの NVMe I/O オペレーションタイムアウト](timeout-nvme-ebs-volumes.md)」を参照してください。
+ I/O が一時停止しているボリュームに I/O を実行すると、次のことが起こります。
  + ボリュームのステータスが 120 秒以内で `impaired` に遷移します。詳細については、「[Amazon EBS ボリュームステータスチェック](monitoring-volume-checks.md)」を参照してください。
  + ボリューム I/O が 60 秒以上一時停止している場合、`VolumeStalledIOCheck` の CloudWatch メトリクスは `1` になります。詳細については、「[Amazon EBS ボリュームのメトリクス](using_cloudwatch_ebs.md#ebs-volume-metrics)」を参照してください。
  + キューの長さ (`VolumeQueueLength`) の CloudWatch メトリクスはゼロ以外になります。アラームやモニタリングでは、キューの深さがゼロでないかどうかを監視する必要があります。
  + `VolumeReadOps` または `VolumeWriteOps` の CloudWatch メトリクスは `0` になります。これは、ボリュームが I/O を処理していないことを示します。

Amazon EC2 コンソールから基本的な実験を実行することも、 AWS FIS コンソールを使用してより高度な実験を実行することもできます。 AWS FIS コンソールを使用して高度な実験を実行する方法の詳細については、「 *AWS Fault Injection Service ユーザーガイド*」の[「 のチュートリアル AWS FIS](https://docs.aws.amazon.com/fis/latest/userguide/fis-tutorials.html)」を参照してください。

**Amazon EC2 コンソールを使用して基本的な実験を行うには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインの [**ボリューム**] を選択します。

1. I/O を一時停止するボリュームを選択し、**[アクション]**、**[フォールトインジェクション]**、**[ボリューム I/O の一時停止]** の順に選択します。

1. **[所要時間]** には、ボリュームとインスタンス間の I/O を一時停止する期間を入力します。[所要時間] ドロップダウンリストの横のフィールドには、ISO 8601 形式の期間が表示されます。

1. **サービスアクセス**セクションで、実験を実行する AWS FIS ために が引き受ける IAM サービスロールを選択します。デフォルトのロールか、作成した既存のロールを使用できます。詳細については、「[AWS FIS 実験の IAM ロールを作成する](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role.html)」を参照してください。

1. **[ボリュームの I/O を一時停止]** を選択します。プロンプトが表示されたら、確認フィールドに `start` と入力し、**[実験を開始]** を選択します。

1. 実験の進行状況と影響をモニタリングします。詳細については、「*AWS FIS ユーザーガイド*」の「[Monitoring AWS FIS](https://docs.aws.amazon.com/fis/latest/userguide/monitoring-experiments.html)」を参照してください。

# レイテンシーインジェクション
<a name="ebs-fis-latency-injection"></a>

のレイテンシーインジェクションアクション (`aws:ebs:volume-io-latency`) を使用して AWS FIS 、Amazon EBS ボリュームの I/O レイテンシーの増加をシミュレートし、アプリケーションがストレージパフォーマンスの低下にどのように応答するかをテストします。このアクションでは、挿入するレイテンシーの値と、ターゲットボリュームに影響を与える I/O の割合を指定できます。を使用すると AWS FIS、事前設定されたレイテンシー実験テンプレートを使用して、ストレージの障害中に観察される可能性のあるさまざまな I/O レイテンシーパターンのテストを開始できます。これらのテンプレートは、アプリケーションに中断を発生させて障害耐性をテストするために使用できるシナリオの初期セットとして設計されています。これらは、アプリケーションが実際に経験する可能性があるすべてのタイプの影響を網羅するように設計されているわけではありません。アプリケーションのパフォーマンスニーズに基づいて、複数の異なるテストを実行するように調整することをお勧めします。利用可能なテンプレートをカスタマイズするか、新しい実験テンプレートを作成して、アプリケーション固有の要件をテストすることができます。

**事前設定済みのレイテンシー実験テンプレート**  
Amazon EBS は、EBS コンソールと [AWS FIS シナリオライブラリ](https://docs.aws.amazon.com/fis/latest/userguide/scenario-library-scenarios.html)を通じて次のレイテンシー実験テンプレートを提供します。ターゲットボリュームでこれらのテンプレートを直接使用して、レイテンシーインジェクション実験を実行することができます。
+ **持続レイテンシー**: 一定のレイテンシーをシミュレートします。この実験は、1 つのレイテンシーインジェクションアクションを使用し、合計所要時間は 15 分です。この実験では、読み取り I/O の 50% と書き込み I/O の 100% に対し、永続的なレイテンシーをシミュレートします (15 分間で 500 ミリ秒)。
+ **レイテンシーの増加**: 徐々に増加するレイテンシーをシミュレートします。この実験は、5 つのレイテンシーインジェクションアクションを使用し、合計所要時間は 15 分です。この実験では、読み取り I/O の 10% と書き込み I/O の 25% に対し、レイテンシーの段階的な増加をシミュレートします (3 分間で 50 ミリ秒、3 分間で 200 ミリ秒、3 分間で 700 ミリ秒、3 分間で 1 秒、3 分間で 15 秒)。
+ **断続的なレイテンシー**: 断続的なレイテンシーの急激なスパイクと、その間の復旧期間をシミュレートします。この実験は、3 つのレイテンシーインジェクションアクションを使用し、合計所要時間は 15 分です。この実験では、読み取りおよび書き込み I/O の 0.1% に対し、3 つのレイテンシーのスパイクをシミュレートします (1 分間継続する 30 秒のスパイク、2 分間継続する 10 秒のスパイク、2 分間継続する 20 秒のスパイク)。レイテンシーの各スパイク間に 5 分間の復旧期間があります。
+ **レイテンシーの削減**: 徐々に減るレイテンシーをシミュレートします。この実験は、5 つのレイテンシーインジェクションアクションを使用し、合計所要時間は 15 分です。この実験では、読み取り I/O と書き込み I/O の 10% に対してレイテンシーの段階的な減少をシミュレートします (3 分間で 20 秒、3 分間で 5 秒、3 分間で 900 ミリ秒、3 分間で 300 ミリ秒、3 分間で 40 ミリ秒)。

**事前設定済みのシナリオをカスタマイズする**

上記の事前設定済みテンプレートをカスタマイズするか、次のカスタマイズ可能なパラメータを使用して独自の新しい実験テンプレートを作成します。
+ `readIOPercentage` — レイテンシーを挿入する読み取り I/O オペレーションの割合。これは、アクションの影響を受けるボリュームに対するすべての読み取り I/O オペレーションの割合です。

  範囲: 最小 0.1%、最大 100%
+ `readIOLatencyMilliseconds` — 読み取り I/O オペレーションに挿入されるレイテンシーの量。これは、実験中に読み取り I/O の指定された割合で観測されるレイテンシーの値です。

  範囲: 最小 1 ミリ秒 (io2) / 10 ミリ秒 (io2 以外)、最大 60 秒
+ `writeIOPercentage` — レイテンシーを挿入する書き込み I/O オペレーションの割合。これは、アクションの影響を受けるボリュームに対するすべての書き込み I/O オペレーションの割合です。

  範囲: 最小 0.1%、最大 100%
+ `writeIOLatencyMilliseconds` — 書き込み I/O オペレーションに挿入されるレイテンシーの量。これは、実験中に書き込み I/O の指定された割合で観測されるレイテンシーの値です。

  範囲: 最小 1 ミリ秒 (io2) / 10 ミリ秒 (io2 以外)、最大 60 秒
+ `duration` — 選択した I/O の割合にレイテンシーが挿入される期間。

  範囲: 最小 1 秒、最大 12 時間

**レイテンシーインジェクションをモニタリングする**  
ボリュームのパフォーマンスへの影響は、次の方法でモニタリングできます。
+ CloudWatch で平均レイテンシーメトリクスを使用して、1 分あたりの平均 I/O レイテンシーを取得します。詳細については、「[Monitor your EBS volumes using CloudWatch](https://docs.aws.amazon.com/ebs/latest/userguide/using_cloudwatch_ebs.html)」を参照してください。
+ NVMe-CLI、CloudWatch エージェント、および Prometheus で利用できる EBS の詳細なパフォーマンス統計を使用して、1 秒あたりの平均 I/O レイテンシーを取得します。詳細なメトリクスでは、ボリュームのレイテンシー分散を分析するために使用できる I/O レイテンシーヒストグラムも提供されます。詳細については、「[NVMe detailed performance statistics](https://docs.aws.amazon.com/ebs/latest/userguide/nvme-detailed-performance-stats.html)」を参照してください。
+ [Amazon EBS ボリュームステータスチェック](monitoring-volume-checks.md) を使用します。I/O レイテンシーを挿入すると、ボリュームのステータスは `warning` 状態に移行します。

**考慮事項**  
EBS レイテンシーインジェクションを使用する場合は、次の点を考慮します。
+ レイテンシーインジェクションは、P4d、P5、P5e、Trn2u、G6、G6f、Gr6、Gr6f、M8i、M8i-flex、C8i-flex、R8i、R8i-flex、I8ge、Mac-m4pro、Mac-m4 を除くすべての [Nitro ベースのインスタンスタイプ](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html)でサポートされています。
+ 実験で指定されたレイテンシー値と観測結果のレイテンシーには最大 5% の差異が生じることがあります。
+ ごく少数の I/O オペレーションしか行わない場合、アクションパラメータで指定された I/O の割合が、アクションの影響を受ける I/O の実際の割合と一致しない可能性があります。

**Amazon EBS ボリュームでレイテンシーインジェクション実験を実行するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインの [**ボリューム**] を選択します。

1. 実験を実行するボリュームを選択し、**[アクション]**、**[レジリエンステスト]**、**[挿入ボリューム I/O レイテンシー]** を選択します。

    AWS Fault Injection Service コンソールが開きます。

1. **[実験を作成]** ウィンドウで、実行する実験のタイプを、**[断続的]**、**[増加中]**、**[持続]**、または **[減少中]** から選択します。

1. **IAM ロールを選択する**には、**新しいロールの作成**を選択して、ユーザーに代わって実験を実行するために AWS FIS が使用する新しいロールを作成します。または、必要なアクセス許可を持つ IAM ロールを以前に作成している場合は、**[既存の IAM ロールを使用]** を選択します。

1. **[料金の見積り]** セクションには、実験の実行コストの見積りが表示されます。では AWS FIS、実験のターゲットアカウントの数に基づいて、アクションが最初から最後まで実行される 1 分ごとに課金されます。

1. **[実験を開始する]** を選択します。