翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AZ: Application Slowdown
AZ: Application Slowdown シナリオを使用して、単一のアベイラビリティーゾーン (AZ) 内のリソース間に追加のレイテンシーを導入できます。このレイテンシーにより、アプリケーションの速度低下、部分的な中断、グレー障害と呼ばれる多くの症状が発生します。ターゲットリソース間のネットワークフローにレイテンシーを追加します。ネットワークフローは、コンピューティングリソース間のトラフィックを表します。サーバー、コンテナ、サービス間のリクエスト、レスポンス、その他の通信を伝送するデータパケットです。このシナリオは、オブザーバビリティ設定の検証、アラームしきい値の調整、速度低下に対するアプリケーションの感度の検出、AZ 退避などの重要な運用上の意思決定の実践に役立ちます。
デフォルトでは、シナリオは 30 分間、選択した AZ 内のターゲットリソース間のネットワークフローの 100% に 200 ミリ秒のレイテンシーを追加します。AWS FIS コンソールの共有パラメータの編集ダイアログを使用して、シナリオレベルで次のパラメータを調整し、基盤となるアクションに適用できます。
-
アベイラビリティーゾーン - シナリオで損なわれる AZ を選択できます。
-
ミリ秒 (ms) のレイテンシー - アプリケーションの感度とニーズに基づいて調整します。たとえば、より機密性の高いアプリケーションではレイテンシーを低く設定したり、タイムアウト処理をテストしたりすることができます。現在のアプリケーションレイテンシーの倍数をベースラインとして使用することを検討してください。
-
フローの割合 - トラフィックのサブセットを損なうように減らします。たとえば、ネットワークフローの 25% に影響する 200 ミリ秒のレイテンシーを追加して、さらに微妙なテストを行うことができます。
-
Duration - 実験の実行時間を設定します。を短縮してテストを高速化したり、長時間持続テストを実行したりできます。例えば、障害が発生した条件下で復旧メカニズムをテストする期間を 2 時間に設定します。
-
リソースターゲティング - タグ (EC2 インスタンスまたは EC2 または Fargate の ECS タスクの場合) またはラベル (EC2 の EKS ポッドの場合) を使用して、シナリオ全体のターゲットリソースを定義できますEC2。独自のタグとラベルを指定することも、シナリオで提供されるデフォルトを使用することもできます。タグやラベルを使用しない場合は、他のパラメータを指定して アクションを編集してリソースをターゲットにできます。
-
カスタマイズ - EC2 または ECS リソースをターゲットにしない場合は、アクションをデフォルトのタグのままにできます。実験では、ターゲットとするリソースが見つからず、アクションはスキップされます。ただし、EKS リソースをターゲットにしない場合は、EKS クラスター識別子を指定する必要があるため、シナリオから EKS アクションとターゲットを完全に削除する必要があります。さらに詳細なカスタマイズのために、実験テンプレートで個々のアクションを直接変更できます。
アクション
以下のアクションを組み合わせると、ネットワークフローにレイテンシーが追加され、アプリケーションを介して伝播されるため、アプリケーションの速度低下の多くの症状を 1 つの AZ で作成できます。これらのアクションは並行して実行され、それぞれがデフォルトで 30 分間 200 ミリ秒のレイテンシーを追加します。この期間を過ぎると、レイテンシーは通常のレベルに戻ります。このシナリオを実行するには、EC2 インスタンス、ECS タスク、または EKS ポッドのいずれかのリソースタイプが必要です。
ECS ネットワークレイテンシー
AZ: Application Slowdown には、ECS タスクのレイテンシーを導入するための aws:ecs:task-network-latency が含まれています。アクションは、選択した AZ のタスクをターゲットにします。デフォルトでは、 の値を持つ という名前のタグAZApplicationSlowdownを持つタスクをターゲットにしていますLatencyForECS。デフォルトのタグを独自のタグに置き換えるか、タスクにシナリオタグを追加できます。有効なタスクが見つからない場合、このアクションはスキップされます。ECS で実験を実行する前に、ECS タスクアクションの設定手順に従う必要があります。
EKS ネットワークレイテンシー
AZ: Application Slowdown には、EKS ポッドのレイテンシーを導入するための aws:eks:pod-network-latency が含まれています。アクションは、選択した AZ のポッドをターゲットにします。デフォルトでは、key=value 形式のラベルを持つクラスター内のポッドをターゲットにします。デフォルトのラベルは ですAZApplicationSlowdown=LatencyForEKS。デフォルトラベルを独自のラベルに置き換えるか、このラベルをポッドに追加できます。有効なポッドが見つからない場合、このアクションはスキップされます。EKS で実験を実行する前に、EKS ポッドアクションのセットアップ手順に従う必要があります。
EC2 ネットワークレイテンシー
AZ: Application Slowdown は、aws:ssm:send-command アクションを使用して AWSFIS-Run-Network-Latency-Sources ドキュメントを実行し、EC2 インスタンスのレイテンシーを導入します。アクションは、選択した AZ のインスタンスをターゲットにします。デフォルトでは、値が の という名前のタグAZApplicationSlowdownを持つインスタンスをターゲットにしますLatencyForEC2。デフォルトのタグを独自のタグに置き換えるか、このタグをインスタンスに追加できます。有効なインスタンスが見つからない場合、このアクションはスキップされます。SSM を使用して EC2 で実験を実行する前に、AWS Systems Manager エージェントを設定する必要があります。
制限
-
このシナリオに停止条件は含まれていません。アプリケーションに適した停止条件を実験テンプレートに追加する必要があります。
要件
-
AWS FIS 実験ロールに必要なアクセス許可を追加します。
-
選択した AZ 内の EC2 インスタンス、ECS タスク、または EKS ポッドの 3 つのタイプのいずれかから 1 つ以上のリソースをターゲットにする必要があります。
-
シナリオのすべてのターゲットは、同じ VPC 内にある必要があります。
権限
このシナリオを実行するには、FIS が実験でターゲットとするリソースタイプのロールと管理ポリシー、EC2、ECS、EKS を引き受けることを許可する信頼ポリシーを持つ IAM ロールが必要です。AZ: Application Slowdown シナリオから実験テンプレートを作成すると、FIS は信頼ポリシーと次の AWS 管理ポリシーを使用してロールを作成します。
既存の IAM ロールを使用して AZ: Application Slowdown シナリオを実行している場合は、次のポリシーをアタッチして AWS FIS に必要なアクセス許可を付与できます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DescribeTasks", "Effect": "Allow", "Action": "ecs:DescribeTasks", "Resource": "*" }, { "Sid": "DescribeContainerInstances", "Effect": "Allow", "Action": "ecs:DescribeContainerInstances", "Resource": "arn:aws:ecs:*:*:container-instance/*/*" }, { "Sid": "DescribeInstances", "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" }, { "Sid": "DescribeSubnets", "Effect": "Allow", "Action": "ec2:DescribeSubnets", "Resource": "*" }, { "Sid": "DescribeCluster", "Effect": "Allow", "Action": "eks:DescribeCluster", "Resource": "arn:aws:eks:*:*:cluster/*" }, { "Sid": "TargetResolutionByTags", "Effect": "Allow", "Action": "tag:GetResources", "Resource": "*" }, { "Sid": "SendCommand", "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ssm:*:*:managed-instance/*", "arn:aws:ssm:*:*:document/*" ] }, { "Sid": "ListCommands", "Effect": "Allow", "Action": [ "ssm:ListCommands" ], "Resource": "*" }, { "Sid": "CancelCommand", "Effect": "Allow", "Action": [ "ssm:CancelCommand" ], "Resource": "*" } ] }
シナリオのコンテンツ
次のコンテンツはシナリオを定義しています。この JSON を保存し、AWS コマンドラインインターフェイス (AWS CLI) から create-experiment-template
{ "tags": { "Name": "AZ: Application Slowdown" }, "description": "Add latency between resources within a single AZ.", "actions": { "LatencyForEKS": { "actionId": "aws:eks:pod-network-latency", "parameters": { "delayMilliseconds": "200", "duration": "PT30M", "flowsPercent": "100", "interface": "DEFAULT", "kubernetesServiceAccount": "fis-service-account", "sources": "us-east-1a" }, "targets": { "Pods": "TargetsForEKS" } }, "LatencyForEC2": { "actionId": "aws:ssm:send-command", "parameters": { "duration": "PT30M", "documentArn": "arn:aws:ssm:us-east-1::document/AWSFIS-Run-Network-Latency-Sources", "documentParameters": "{\"DelayMilliseconds\":\"200\",\"Sources\":\"us-east-1a\",\"Interface\":\"DEFAULT\",\"TrafficType\":\"egress\",\"DurationSeconds\":\"1800\",\"FlowsPercent\":\"100\",\"InstallDependencies\":\"True\"}" }, "targets": { "Instances": "TargetsForEC2" } }, "LatencyForECS": { "actionId": "aws:ecs:task-network-latency", "parameters": { "delayMilliseconds": "200", "duration": "PT30M", "flowsPercent": "100", "installDependencies": "true", "sources": "us-east-1a", "useEcsFaultInjectionEndpoints": "true" }, "targets": { "Tasks": "TargetsForECS" }, "startAfter": [] } }, "targets": { "TargetsForEKS": { "parameters": { "availabilityZoneIdentifier": "us-east-1a", "clusterIdentifier": "", "namespace": "default", "selectorType": "labelSelector", "selectorValue": "AZApplicationSlowdown=LatencyForEKS" }, "resourceType": "aws:eks:pod", "selectionMode": "ALL" }, "TargetsForEC2": { "filters": [ { "path": "Placement.AvailabilityZone", "values": [ "us-east-1a" ] } ], "resourceTags": { "AZApplicationSlowdown": "LatencyForEC2" }, "resourceType": "aws:ec2:instance", "selectionMode": "ALL" }, "TargetsForECS": { "filters": [ { "path": "AvailabilityZone", "values": [ "us-east-1a" ] } ], "resourceTags": { "AZApplicationSlowdown": "LatencyForECS" }, "resourceType": "aws:ecs:task", "selectionMode": "ALL" } }, "experimentOptions": { "accountTargeting": "single-account", "emptyTargetResolutionMode": "skip" }, "stopConditions": [ { "source": "none" } ] }