Cross-AZ: Traffic Slowdown - AWS Service d'injection de défauts

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Cross-AZ: Traffic Slowdown

Vous pouvez utiliser le scénario Cross-AZ : Traffic Slowdown pour injecter des pertes de paquets afin de perturber et de ralentir le trafic entre les zones de disponibilité (AZs). La perte de paquets nuit à la communication inter-AZ, une interruption partielle, parfois connue sous le nom de panne grise. Il injecte des pertes de paquets sur les flux réseau entre les ressources cibles. Les flux réseau représentent le trafic entre les ressources informatiques, c'est-à-dire les paquets de données transportant les demandes, les réponses et les autres communications entre vos serveurs, conteneurs et services. Le scénario peut aider à valider les configurations d'observabilité, à ajuster les seuils d'alarme, à découvrir la sensibilité et les dépendances des applications dans les communications inter-zones, et à prendre des décisions opérationnelles critiques telles que l'évacuation des zones de zone de sécurité.

Par défaut, le scénario injecte 15 % de perte de paquets dans 100 % des flux réseau sortants pour les ressources cibles depuis l'AZ sélectionnée pendant une durée de 30 minutes. Vous pouvez utiliser la boîte de dialogue Modifier les paramètres partagés de la console AWS FIS pour ajuster les paramètres suivants au niveau du scénario, qui s'appliquent ensuite aux actions sous-jacentes :

  • Zone de disponibilité : vous pouvez sélectionner l'AZ à altérer, et la perte de paquets sera injectée de cette zone à l'autre AZs au sein de la région.

  • Perte de paquets : réduisez la perte de paquets pour des tests d'interruption subtils, tels que 5 %, ou plus, pour tester des mécanismes de dégradation grave des communications et de restauration, tels que 50 %, voire 100 %, pour un impact total sur la connectivité.

  • Pourcentage de flux : réduisez pour altérer un sous-ensemble du trafic. Par exemple, vous pouvez injecter 15 % de perte de paquets affectant 25 % des flux réseau pour des tests encore plus subtils.

  • Durée : définissez la durée de l'expérience. Vous pouvez raccourcir pour accélérer les tests ou exécuter des tests prolongés plus longs. Par exemple, définissez la durée sur 2 heures pour aider à tester les mécanismes de rétablissement dans des conditions altérées.

  • Ciblage des ressources : vous pouvez définir des ressources cibles pour le scénario global à l'aide de balises (pour les EC2 instances ou les tâches ECS sur EC2 ou Fargate) ou d'étiquettes (pour les pods EKS activés). EC2 Vous pouvez spécifier vos propres balises et étiquettes, ou utiliser les valeurs par défaut fournies dans le scénario. Si vous ne souhaitez pas utiliser de balises ou d'étiquettes, vous pouvez modifier l'action pour cibler les ressources en spécifiant d'autres paramètres.

  • Personnalisation : si vous ne souhaitez pas cibler EC2 les ressources ECS, vous pouvez laisser les actions avec les balises par défaut. L'expérience ne trouvera aucune ressource à cibler et l'action sera ignorée. Toutefois, si vous ne souhaitez pas cibler les ressources EKS, vous devez supprimer complètement l'action et la cible EKS du scénario, car un identifiant de cluster EKS doit être fourni. Pour une personnalisation encore plus précise, vous pouvez modifier les actions individuelles directement dans le modèle d'expérience.

Actions

Ensemble, les actions suivantes contribuent à créer les symptômes d'un ralentissement du trafic AZs en introduisant une perte de paquets lors des communications sortantes entre l'AZ cible et une autre AZs zone de la région au niveau de la couche réseau. Ces actions s'exécutent en parallèle, chacune entraînant par défaut une perte de paquets de 15 % pendant 30 minutes. Après cette période, la communication redevient normale. Le scénario nécessite au moins l'un des types de ressources suivants dans l'AZ sélectionnée pour s'exécuter : EC2 instance, tâche ECS ou pod EKS.

Perte de paquets réseau ECS

Cross-AZ : Traffic Slowdown inclut aws:ecs : task-network-packet-loss pour injecter des pertes de paquets pour les tâches ECS. L'action cible les tâches de l'AZ sélectionnée et nuit à leur communication sortante avec toutes les autres tâches de la AZs région. Vous pouvez personnaliser davantage l'étendue de l'impact en modifiant l'action et en l'ajoutant ou en la supprimant AZs du Sources champ. Par défaut, il cible les tâches dotées d'une balise nommée CrossAZTrafficSlowdown avec une valeur dePacketLossForECS. Vous pouvez remplacer le tag par défaut par le vôtre ou ajouter le tag scenario à vos tâches. Si aucune tâche valide n'est trouvée, cette action sera ignorée. Avant d'exécuter une expérience sur ECS, vous devez suivre les étapes de configuration des actions des tâches ECS.

Perte de paquets réseau EKS

Cross-AZ : Traffic Slowdown inclut aws:eks : pod-network-packet-loss pour injecter des pertes de paquets dans les pods EKS. L'action cible les pods de l'AZ sélectionnée et altère leurs communications sortantes avec tous les autres groupes de la AZs région. Vous pouvez personnaliser davantage l'étendue de l'impact en modifiant l'action et en l'ajoutant ou en la supprimant AZs du Sources champ. Par défaut, il cible les pods d'un cluster dont les étiquettes sont au format key=value. L'étiquette par défaut fournie estCrossAZTraffic=PacketLossForEKS. Vous pouvez remplacer l'étiquette par défaut par la vôtre ou ajouter cette étiquette à vos capsules. Si aucun module valide n'est trouvé, cette action sera ignorée. Avant de lancer une expérience sur EKS, vous devez suivre les étapes de configuration relatives aux actions du pod EKS.

EC2 Perte de paquets réseau

Cross-AZ : Traffic Slowdown utilise l'action aws:ssm:send-command pour exécuter le document AWSFIS-Run-Network-Packet-Loss-Sources afin d'injecter des pertes de paquets pour les instances et de perturber leurs communications sortantes avec tous les autres acteurs de la région. EC2 AZs Vous pouvez personnaliser davantage l'étendue de l'impact en modifiant l'action et en l'ajoutant ou en la supprimant AZs du Sources champ. L'action cible les instances de l'AZ sélectionnée. Par défaut, il cible les instances dotées d'une balise nommée CrossAZTrafficSlowdown avec une valeur dePacketLossForEC2. Vous pouvez remplacer la balise par défaut par la vôtre ou ajouter cette balise à vos instances. Si aucune instance valide n'est trouvée, cette action sera ignorée. Avant de lancer une expérience sur EC2 l'utilisation de SSM, vous devez configurer l'agent AWS Systems Manager.

Limitations

  • Ce scénario n'inclut pas les conditions d'arrêt. Les conditions d'arrêt correctes pour votre application doivent être ajoutées au modèle d'expérience.

Prérequis

  • Ajoutez les autorisations requises au rôle d'expérience AWS FIS.

  • Vous devez cibler une ou plusieurs ressources provenant de l'un des 3 types suivants au sein de l'AZ sélectionnée : EC2 instances, tâches ECS ou pods EKS.

  • Toutes les cibles du scénario doivent se trouver dans le même VPC.

Permissions

Pour exécuter ce scénario, vous avez besoin d'un rôle IAM avec une politique de confiance qui permet à FIS d'assumer le rôle et les politiques gérées pour les types de ressources que vous ciblez dans l'expérience : EC2 ECS et EKS. Lorsque vous créez un modèle de test à partir du scénario Cross-AZ : Traffic Slowdown, FIS crée le rôle correspondant à la politique de confiance et aux politiques gérées par AWS suivantes :

Si vous utilisez un rôle IAM existant pour exécuter le scénario Cross-AZ : Traffic Slowdown, vous pouvez joindre la politique suivante pour accorder à AWS FIS les autorisations nécessaires :

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

Contenu du scénario

Le contenu suivant définit le scénario. Ce JSON peut être enregistré et utilisé pour créer un modèle d'expérience à l'aide de la create-experiment-templatecommande de l'AWS Command Line Interface (AWS CLI). Pour obtenir la version la plus récente du scénario, consultez la bibliothèque de scénarios de la console FIS et accédez à l'onglet Contenu.

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