Cross-AZ: Traffic 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.

Cross-AZ: Traffic Slowdown

Sie können das „Cross-AZ: Traffic Slowdown“ -Szenario verwenden, um durch Paketverlust den Verkehr zwischen Availability Zones () zu unterbrechen und zu verlangsamen. AZs Der Paketverlust beeinträchtigt die AZ-übergreifende Kommunikation, was zu einer teilweisen Unterbrechung führt, die manchmal auch als grauer Ausfall bezeichnet wird. Er führt zu Paketverlusten bei Netzwerkströmen zwischen 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, Anwendungsempfindlichkeiten und Abhängigkeiten bei der AZ-übergreifenden Kommunikation zu ermitteln und wichtige betriebliche Entscheidungen wie die Evakuierung von AZ zu treffen.

Standardmäßig führt das Szenario für eine Dauer von 30 Minuten zu einem Paketverlust von 15% bei 100% der ausgehenden Netzwerkflüsse für Zielressourcen aus 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 beeinträchtigt werden soll, und Paketverluste werden von dieser AZ zur anderen AZs innerhalb der Region übertragen.

  • Paketverlust — Passen Sie den Paketverlust für Tests auf subtile Unterbrechungen niedriger an, z. B. 5% oder höher, um schwerwiegende Kommunikationsbeeinträchtigungen und Wiederherstellungsmechanismen zu testen, z. B. 50% oder sogar 100%, um die gesamte Konnektivität zu beeinträchtigen.

  • Prozentsatz der Datenflüsse — reduzieren Sie, um einen Teil des Datenverkehrs zu beeinträchtigen. Für noch subtilere Tests können Sie beispielsweise einen Paketverlust von 15% einbauen, der 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 die Wiederherstellungsmechanismen unter beeinträchtigten 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, die Symptome einer Verlangsamung des Datenverkehrs zwischen beiden zu beheben, AZs indem sie zu Paketverlusten bei ausgehender Kommunikation von der Ziel-AZ zu anderen AZs in der Region auf Netzwerkebene führen. Diese Aktionen werden parallel ausgeführt, wobei jede Aktion standardmäßig für 30 Minuten einen Paketverlust von 15% verursacht. Nach diesem Zeitraum kehrt die Kommunikation zur Normalität zurück. Für die Ausführung des Szenarios ist mindestens einer der folgenden Ressourcentypen in der ausgewählten AZ erforderlich: EC2 Instanz, ECS-Task oder EKS-Pod.

Verlust von ECS-Netzwerkpaketen

Cross-AZ: Traffic Slowdown beinhaltet aws:ecs:, um Paketverlust bei ECS-Aufgaben task-network-packet-loss einzuschleusen. Die Aktion zielt auf Aufgaben in der ausgewählten AZ ab und beeinträchtigt deren ausgehende Kommunikation mit allen anderen in der Region. AZs Sie können den Umfang der Auswirkungen weiter anpassen, indem Sie die Aktion bearbeiten und dem Feld etwas hinzufügen oder AZs daraus entfernen. Sources Standardmäßig zielt es auf Aufgaben ab, deren Tag CrossAZTrafficSlowdown den Wert hatPacketLossForECS. 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.

Verlust von EKS-Netzwerkpaketen

Cross-AZ: Traffic Slowdown beinhaltet aws:eks:, um Paketverlust für EKS-Pods pod-network-packet-loss zu verhindern. Die Aktion zielt auf Pods in der ausgewählten AZ ab und beeinträchtigt deren ausgehende Kommunikation mit allen anderen Pods in der Region. AZs Sie können den Umfang der Auswirkungen weiter anpassen, indem Sie die Aktion bearbeiten und dem Feld etwas hinzufügen oder AZs daraus entfernen. Sources Standardmäßig zielt es auf Pods innerhalb eines Clusters ab, die Labels im Format key=value haben. Das bereitgestellte Standardlabel ist. CrossAZTraffic=PacketLossForEKS 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 Verlust von Netzwerkpaketen

Cross-AZ: Traffic Slowdown verwendet die Aktion aws:ssm:send-command, um das Dokument AWSFIS-Run-Network-Packet-Loss-Sources auszuführen, um Paketverlust für Instances zu verursachen, und beeinträchtigt deren ausgehende Kommunikation mit allen anderen in der Region. EC2 AZs Sie können den Umfang der Auswirkung weiter anpassen, indem Sie die Aktion bearbeiten und dem Feld etwas hinzufügen oder daraus entfernen. AZs Sources Die Aktion zielt auf Instanzen in der ausgewählten AZ ab. Standardmäßig zielt sie auf Instances ab, CrossAZTrafficSlowdown deren Tag den Wert hatPacketLossForEC2. 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 Cross-AZ: Traffic 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 Szenario Cross-AZ: Traffic 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. 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": "Cross-AZ: Traffic Slowdown" }, "description": "Inject packet loss to disrupt and slow down traffic between AZs.", "actions": { "PacketLossForEC2": { "actionId": "aws:ssm:send-command", "parameters": { "duration": "PT30M", "documentArn": "arn:aws:ssm:us-east-1::document/AWSFIS-Run-Network-Packet-Loss-Sources", "documentParameters": "{\"Sources\":\"us-east-1b,us-east-1c,us-east-1d,us-east-1e,us-east-1f\",\"LossPercent\":\"15\",\"Interface\":\"DEFAULT\",\"TrafficType\":\"egress\",\"DurationSeconds\":\"1800\",\"FlowsPercent\":\"100\",\"InstallDependencies\":\"True\"}" }, "targets": { "Instances": "TargetsForEC2" } }, "PacketLossForECS": { "actionId": "aws:ecs:task-network-packet-loss", "parameters": { "sources": "us-east-1b,us-east-1c,us-east-1d,us-east-1e,us-east-1f", "lossPercent": "15", "duration": "PT30M", "flowsPercent": "100", "installDependencies": "true", "useEcsFaultInjectionEndpoints": "true" }, "targets": { "Tasks": "TargetsForECS" } }, "PacketLossForEKS": { "actionId": "aws:eks:pod-network-packet-loss", "parameters": { "sources": "us-east-1b,us-east-1c,us-east-1d,us-east-1e,us-east-1f", "lossPercent": "15", "duration": "PT30M", "flowsPercent": "100", "interface": "DEFAULT", "kubernetesServiceAccount": "fis-service-account" }, "targets": { "Pods": "TargetsForEKS" } } }, "targets": { "TargetsForEC2": { "filters": [ { "path": "Placement.AvailabilityZone", "values": [ "us-east-1a" ] } ], "resourceTags": { "CrossAZTrafficSlowdown": "PacketLossForEC2" }, "resourceType": "aws:ec2:instance", "selectionMode": "ALL" }, "TargetsForECS": { "filters": [ { "path": "AvailabilityZone", "values": [ "us-east-1a" ] } ], "resourceTags": { "CrossAZTrafficSlowdown": "PacketLossForECS" }, "resourceType": "aws:ecs:task", "selectionMode": "ALL" }, "TargetsForEKS": { "parameters": { "availabilityZoneIdentifier": "us-east-1a", "clusterIdentifier": "", "namespace": "default", "selectorType": "labelSelector", "selectorValue": "CrossAZTrafficSlowdown=PacketLossForEKS" }, "resourceType": "aws:eks:pod", "selectionMode": "ALL" } }, "experimentOptions": { "accountTargeting": "single-account", "emptyTargetResolutionMode": "skip" }, "stopConditions": [ { "source": "none" } ] }