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: Verlangsamung der Anwendung
Sie können das Szenario AZ: Anwendungsverlangsamung verwenden, um zusätzliche Latenz zwischen Ressourcen innerhalb einer einzelnen Availability Zone (AZ) einzuführen. Diese Latenz verursacht viele der Symptome einer Anwendungsverlangsamung, einer teilweisen Unterbrechung, die manchmal auch als grauer Ausfall bezeichnet wird. Sie erhöht die Latenz der Netzwerkflüsse zwischen Zielressourcen. Netzwerkflüsse stellen den Verkehr zwischen Computerressourcen dar — die Datenpakete, die Anfragen, Antworten und andere Kommunikationsvorgänge zwischen Ihren Servern, Containern und Diensten übertragen. Das Szenario kann helfen, Observability-Einstellungen zu validieren, Alarmschwellenwerte einzustellen, 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 100% der Netzwerkflüsse zwischen den Zielressourcen innerhalb der ausgewählten AZ für eine Dauer von 30 Minuten um 200 ms Latenz. Sie können das Dialogfeld „Gemeinsam genutzte 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 Anforderungen 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.
-
Prozentualer Anteil der Datenflüsse — reduzieren Sie ihn, um einen Teil des Datenverkehrs zu beeinträchtigen. Zum Beispiel können Sie für noch subtilere Tests eine Latenz von 200 ms hinzufügen, die 25% der Netzwerkflüsse betrifft.
-
Dauer — legen Sie fest, wie lange das Experiment läuft. Sie können die Testdauer verkürzen, um schnellere Tests durchzuführen, oder länger andauernde Tests durchführen. Stellen Sie die Dauer beispielsweise auf 2 Stunden ein, um Ihre Wiederherstellungsmechanismen unter beeinträchtigten Bedingungen zu testen.
-
Zielressourcen — 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 EC2- oder ECS-Ressourcen abzielen möchten, können Sie die Aktionen mit Standard-Tags belassen. Das Experiment findet keine Ressourcen, 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 hierfür eine EKS-Cluster-ID bereitgestellt werden muss. Für eine noch detailliertere Anpassung können Sie einzelne Aktionen direkt in der Versuchsvorlage ändern.
Aktionen
Zusammengenommen tragen die folgenden Aktionen dazu bei, viele der Symptome einer Anwendungsverlangsamung in einer einzelnen AZ hervorzurufen, indem sie zusätzliche Latenzen in den Netzwerkabläufen verursachen, die sich dann in der Anwendung ausbreiten. Diese Aktionen werden parallel ausgeführt und bieten standardmäßig jeweils eine Latenz von 200 ms für 30 Minuten. Nach diesem Zeitraum kehrt die Latenz auf das normale Niveau zurück. Für die Ausführung des Szenarios ist mindestens einer der folgenden Ressourcentypen erforderlich: EC2-Instance, ECS-Aufgabe 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 mit einem Tag ab, der AZApplicationSlowdown mit dem Wert von benannt istLatencyForECS. 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 mit ECS ausfü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 lautet. 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 ausfü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 auszuführen, um Latenz für EC2-Instances einzuführen. AWSFIS-Run-Network-Latency-Sources Die Aktion zielt auf Instanzen in der ausgewählten AZ ab. Standardmäßig zielt sie auf Instanzen ab, deren Tag AZApplicationSlowdown mit dem Wert von benannt istLatencyForEC2. 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 mit SSM ein Experiment auf EC2 ausführen, sollten Sie den AWS Systems 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 eine oder mehrere Ressourcen aus einem der folgenden drei Typen innerhalb des ausgewählten AZ als Ziel auswählen: 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, auf die Sie im Experiment abzielen: EC2, 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 vorhandene IAM-Rolle verwenden, um das Szenario AZ: Application Slowdown 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. Dieses JSON kann gespeichert und verwendet werden, um eine Versuchsvorlage mithilfe des Befehls create-experiment-template aus der
{ "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" } ] }