AZ: Application Slowdown - AWS Fehlerinjektionsservice

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AZ: Application Slowdown

Sie können das Szenario AZ: Application Slowdown verwenden, um zusätzliche Latenz zwischen Ressourcen innerhalb einer einzigen Availability Zone (AZ) einzuführen. Diese Latenz führt zu vielen Symptomen einer Anwendungsverlangsamung, einer teilweisen Unterbrechung, die manchmal auch als grauer Ausfall bezeichnet wird. Sie erhöht die Latenz der Netzwerkflüsse zwischen den Zielressourcen. Netzwerkflüsse stellen den Verkehr zwischen Rechenressourcen dar — Datenpakete, die Anfragen, Antworten und andere Kommunikationswege zwischen Ihren Servern, Containern und Diensten übertragen. Das Szenario kann dabei helfen, Beobachtbarkeitseinstellungen zu validieren, Alarmschwellenwerte zu optimieren, die Empfindlichkeit von Anwendungen gegenüber Verlangsamungen zu ermitteln und wichtige betriebliche Entscheidungen wie die Evakuierung von AZ zu treffen.

Standardmäßig erhöht das Szenario für eine Dauer von 30 Minuten eine Latenz von 200 ms auf 100% der Netzwerkflüsse zwischen Zielressourcen innerhalb der ausgewählten AZ. Sie können das Dialogfeld Gemeinsame Parameter bearbeiten in der AWS FIS-Konsole verwenden, um die folgenden Parameter auf Szenarioebene anzupassen, die dann für die zugrunde liegenden Aktionen gelten:

  • Availability Zone — Sie können die AZ auswählen, die im Szenario beeinträchtigt werden soll.

  • Latenz in Millisekunden (ms) — passen Sie diese an die Empfindlichkeit und die Bedürfnisse Ihrer Anwendung an. Sie können die Latenz für empfindlichere Anwendungen niedriger oder höher einstellen, um beispielsweise die Behandlung von Timeouts zu testen. Erwägen Sie, ein Vielfaches Ihrer aktuellen Anwendungslatenz als Ausgangswert zu verwenden.

  • Prozentsatz der Datenflüsse — reduzieren Sie, um einen Teil des Datenverkehrs zu beeinträchtigen. Für noch subtilere Tests können Sie beispielsweise eine Latenz von 200 ms hinzufügen, was 25% der Netzwerkflüsse betrifft.

  • Dauer — legen Sie fest, wie lange das Experiment läuft. Sie können die Dauer für schnellere Tests verkürzen oder längere Dauertests ausführen. Legen Sie die Dauer beispielsweise auf 2 Stunden fest, um Ihre Wiederherstellungsmechanismen unter eingeschränkten Bedingungen zu testen.

  • Ressourcen-Targeting — Sie können Zielressourcen für das Gesamtszenario mithilfe von Tags (für EC2 Instances oder ECS-Aufgaben auf EC2 oder Fargate) oder Labels (für EKS-Pods auf EC2) definieren. Sie können Ihre eigenen Tags und Labels angeben oder die im Szenario bereitgestellten Standardwerte verwenden. Wenn Sie keine Tags oder Labels verwenden möchten, können Sie die Aktion so bearbeiten, dass sie auf Ressourcen abzielt, indem Sie andere Parameter angeben.

  • Anpassung — Wenn Sie nicht auf ECS-Ressourcen abzielen EC2 möchten, können Sie die Aktionen mit Standard-Tags belassen. Im Experiment werden keine Ressourcen gefunden, auf die Sie abzielen könnten, und die Aktion wird übersprungen. Wenn Sie jedoch nicht auf EKS-Ressourcen abzielen möchten, sollten Sie die EKS-Aktion und das EKS-Ziel vollständig aus dem Szenario entfernen, da dafür eine EKS-Cluster-ID angegeben werden muss. Für eine noch detailliertere Anpassung können Sie einzelne Aktionen direkt in der Experimentvorlage ändern.

Aktionen

Zusammengenommen tragen die folgenden Aktionen dazu bei, viele der Symptome einer Anwendungsverlangsamung in einer einzigen AZ hervorzurufen, indem sie zu zusätzlicher Latenz bei den Netzwerkabläufen führen, die sich dann in der gesamten Anwendung ausbreiten. Diese Aktionen werden parallel ausgeführt, wobei jeweils standardmäßig eine Latenz von 200 ms für 30 Minuten hinzugefügt wird. Nach diesem Zeitraum kehrt die Latenz auf ein normales Niveau zurück. Für die Ausführung des Szenarios ist mindestens einer der folgenden Ressourcentypen erforderlich: EC2 Instanz, ECS-Task oder EKS-Pod.

ECS-Netzwerklatenz

AZ: Application Slowdown beinhaltet aws:ecs:, task-network-latency um Latenz für ECS-Aufgaben einzuführen. Die Aktion zielt auf Aufgaben in der ausgewählten AZ ab. Standardmäßig zielt sie auf Aufgaben ab, deren Tag AZApplicationSlowdown den Wert hatLatencyForECS. Sie können das Standard-Tag durch Ihr eigenes ersetzen oder das Szenario-Tag zu Ihren Aufgaben hinzufügen. Wenn keine gültigen Aufgaben gefunden werden, wird diese Aktion übersprungen. Bevor Sie ein Experiment auf ECS durchführen, sollten Sie die Einrichtungsschritte für ECS-Aufgabenaktionen befolgen.

EKS-Netzwerklatenz

AZ: Application Slowdown beinhaltet aws:eks:, pod-network-latency um Latenz für EKS-Pods einzuführen. Die Aktion zielt auf Pods in der ausgewählten AZ ab. Standardmäßig zielt sie auf Pods innerhalb eines Clusters ab, die Labels im Format key=value haben. Das bereitgestellte Standardlabel ist. AZApplicationSlowdown=LatencyForEKS Sie können das Standardlabel durch Ihr eigenes ersetzen oder dieses Label zu Ihren Pods hinzufügen. Wenn keine gültigen Pods gefunden werden, wird diese Aktion übersprungen. Bevor Sie ein Experiment mit EKS durchführen, sollten Sie die Einrichtungsschritte für EKS-Pod-Aktionen befolgen.

EC2 Netzwerklatenz

AZ: Application Slowdown verwendet die Aktion aws:ssm:send-command, um das Dokument -Network-Latency-Sources auszuführen, um Latenz für Instanzen einzuführenAWSFIS-Run. EC2 Die Aktion zielt auf Instanzen in der ausgewählten AZ ab. Standardmäßig zielt sie auf Instances ab, AZApplicationSlowdown deren Tag den Wert hatLatencyForEC2. Sie können das Standard-Tag durch Ihr eigenes ersetzen oder dieses Tag zu Ihren Instances hinzufügen. Wenn keine gültigen Instanzen gefunden werden, wird diese Aktion übersprungen. Bevor Sie ein Experiment zur EC2 Verwendung von SSM durchführen, sollten Sie den AWS Systems Manager Manager-Agenten konfigurieren.

Einschränkungen

  • Dieses Szenario beinhaltet keine Stoppbedingungen. Die richtigen Stoppbedingungen für Ihre Anwendung sollten der Versuchsvorlage hinzugefügt werden.

Voraussetzungen

  • Fügen Sie der AWS FIS-Experimentrolle die erforderlichen Berechtigungen hinzu.

  • Sie müssen innerhalb der ausgewählten AZ auf eine oder mehrere Ressourcen aus einem der folgenden drei Typen abzielen: EC2 Instances, ECS-Aufgaben oder EKS-Pods.

  • Alle Ziele des Szenarios müssen sich in derselben VPC befinden.

Berechtigungen

Um dieses Szenario auszuführen, benötigen Sie eine IAM-Rolle mit einer Vertrauensrichtlinie, die es FIS ermöglicht, die Rolle und die verwalteten Richtlinien für die Ressourcentypen zu übernehmen EC2, auf die Sie im Experiment abzielen: ECS und EKS. Wenn Sie eine Versuchsvorlage aus dem Szenario AZ: Application Slowdown erstellen, erstellt FIS die Rolle für Sie mit der Vertrauensrichtlinie und den folgenden von AWS verwalteten Richtlinien:

Wenn Sie eine bestehende IAM-Rolle verwenden, um das AZ: Application Slowdown-Szenario auszuführen, können Sie die folgende Richtlinie anhängen, um AWS FIS die erforderlichen Berechtigungen zu gewähren:

{ "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": "*" } ] }

Inhalt des Szenarios

Der folgende Inhalt definiert das Szenario. Diese JSON-Datei kann gespeichert und verwendet werden, um mithilfe des create-experiment-templateBefehls von der AWS-Befehlszeilenschnittstelle (AWS CLI) eine Versuchsvorlage zu erstellen. Die neueste Version des Szenarios finden Sie in der Szenario-Bibliothek in der FIS-Konsole und wechseln Sie zur Registerkarte Inhalt.

{ "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" } ] }