View a markdown version of this page

Cross-AZ: Verlangsamung des Verkehrs - AWS Service zur Fehlerinjektion

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: Verlangsamung des Verkehrs

Sie können das Szenario Cross-AZ: Verkehrsverlangsamung verwenden, um durch Paketverlust den Verkehr zwischen Availability Zones (AZs) zu unterbrechen und zu verlangsamen. Der Paketverlust beeinträchtigt die AZ-übergreifende Kommunikation. Dabei handelt es sich um eine teilweise Unterbrechung, die manchmal auch als grauer Ausfall bezeichnet wird. Dadurch werden die Netzwerkflüsse zwischen den Zielressourcen durch Paketverluste beeinträchtigt. Netzwerkflüsse stellen den Verkehr zwischen Computerressourcen dar — die Datenpakete, die Anforderungen, Antworten und andere Kommunikationsvorgänge zwischen Ihren Servern, Containern und Diensten übertragen. Das Szenario kann dabei helfen, Observability-Einstellungen 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 bei 100% der ausgehenden Netzwerkflüsse für Zielressourcen aus der ausgewählten AZ einen Paketverlust von 15% ein. 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 beeinträchtigt werden soll, und der Paketverlust wird von dieser AZ an die anderen AZs innerhalb der Region übertragen.

  • Paketverlust — Stellen Sie den Paketverlust für subtile Unterbrechungstests niedriger ein, z. B. 5%, oder höher, um schwerwiegende Kommunikationsbeeinträchtigungen und Wiederherstellungsmechanismen zu testen, z. B. 50% oder sogar 100%, wenn die gesamte Konnektivität beeinträchtigt wird.

  • Prozentsatz der Datenflüsse — reduzieren, um einen Teil des Datenverkehrs zu beeinträchtigen. Zum Beispiel können Sie für noch subtilere Tests einen Paketverlust von 15% injizieren, was 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. Legen Sie beispielsweise die Dauer auf 2 Stunden fest, um 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, die Symptome einer Verlangsamung des Datenverkehrs zwischen AZs hervorzurufen, indem sie zu Paketverlusten bei der ausgehenden Kommunikation von der Ziel-AZ zu anderen AZs in der Region auf der Netzwerkebene führen. Diese Aktionen werden parallel ausgeführt, wobei jede Aktion standardmäßig 30 Minuten lang für 15 Minuten zu einem Paketverlust von 15% führt. Nach Ablauf dieser Zeit 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-Instance, ECS-Task oder EKS-Pod.

Verlust von ECS-Netzwerkpaketen

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

Cross-AZ: Die Verlangsamung des Datenverkehrs beinhaltet aws:eks:pod-network-packet-loss, um Paketverlust für EKS-Pods einzuleiten. Die Aktion zielt auf Pods in der ausgewählten AZ ab und beeinträchtigt deren ausgehende Kommunikation mit allen anderen AZs in der Region. Sie können den Umfang der Auswirkung weiter anpassen, indem Sie die Aktion bearbeiten und AZs zum Feld hinzufügen oder daraus entfernen. Sources Standardmäßig zielt es auf Pods innerhalb eines Clusters ab, die Labels im Format key=value haben. Das bereitgestellte Standardlabel lautet. 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 ausführen, sollten Sie die Einrichtungsschritte für EKS-Pod-Aktionen befolgen.

Verlust von EC2-Netzwerkpaketen

Cross-AZ: Traffic Slowdown verwendet die Aktion aws:ssm:send-command, um das AWSFIS-Run-Network-Packet-Loss-Sources Dokument auszuführen, um den EC2-Instances Paketverlust zu injizieren, und beeinträchtigt deren ausgehende Kommunikation mit allen anderen AZs in der Region. Sie können den Umfang der Auswirkung weiter anpassen, indem Sie die Aktion bearbeiten und AZs zum Feld hinzufügen oder daraus entfernen. Sources Die Aktion zielt auf Instanzen in der ausgewählten AZ ab. Standardmäßig zielt sie auf Instanzen ab, deren Tag CrossAZTrafficSlowdown mit dem Wert von benannt istPacketLossForEC2. 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 Cross-AZ: Verkehrsverlangsamung 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 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. Dieses JSON kann gespeichert und verwendet werden, um mithilfe des Befehls create-experiment-template über die AWS-Befehlszeilenschnittstelle (AWS CLI) eine Versuchsvorlage zu erstellen. Die neueste Version des Szenarios finden Sie in der Szenariobibliothek 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" } ] }