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.
AZ: Application Slowdown
Vous pouvez utiliser le scénario AZ : ralentissement des applications pour introduire une latence supplémentaire entre les ressources au sein d'une même zone de disponibilité (AZ). Cette latence est à l'origine de nombreux symptômes d'un ralentissement d'une application, d'une interruption partielle, parfois connue sous le nom de panne grise. Il ajoute de la latence aux 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é des applications aux ralentissements et à prendre des décisions opérationnelles critiques telles que l'évacuation des zones d'urgence.
Par défaut, le scénario ajoute 200 ms de latence à 100 % des flux réseau entre les ressources cibles au sein de 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 dans le scénario.
-
Millisecondes (ms) de latence : ajustez cette latence en fonction de la sensibilité et des besoins de votre application. Vous pouvez définir une latence plus faible pour les applications plus sensibles ou une latence plus élevée pour tester la gestion des délais d'attente, par exemple. Envisagez d'utiliser des multiples de la latence actuelle de votre application comme référence.
-
Pourcentage de flux : réduisez pour altérer un sous-ensemble du trafic. Par exemple, vous pouvez ajouter une latence de 200 ms 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, réglez la durée sur 2 heures pour tester vos mécanismes de récupération 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 bon nombre des symptômes d'un ralentissement d'une application dans une seule zone de zone de développement en introduisant une latence supplémentaire sur les flux réseau, qui se propage ensuite dans l'application. Ces actions s'exécutent en parallèle, chacune ajoutant une latence de 200 ms pendant 30 minutes par défaut. Après cette période, la latence revient à des niveaux normaux. Le scénario nécessite au moins l'un des types de ressources suivants pour s'exécuter : EC2 instance, tâche ECS ou module EKS.
Latence du réseau ECS
AZ : Application Slowdown inclut aws:ecs : task-network-latency pour introduire de la latence dans les tâches ECS. L'action cible les tâches de l'AZ sélectionnée. Par défaut, il cible les tâches dotées d'une balise nommée AZApplicationSlowdown avec une valeur deLatencyForECS. 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.
Latence du réseau EKS
AZ : Application Slowdown inclut aws:eks : pod-network-latency pour introduire la latence pour les pods EKS. L'action cible les pods situés dans la zone AZ sélectionnée. Par défaut, il cible les pods d'un cluster dont les étiquettes sont au format key=value. L'étiquette par défaut fournie estAZApplicationSlowdown=LatencyForEKS. 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 Latence du réseau
AZ : Application Slowdown utilise l'action aws:ssm:send-command pour exécuter le document AWSFIS-Run-Network-Latency-Sources afin d'introduire de la latence pour les instances. EC2 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 AZApplicationSlowdown avec une valeur deLatencyForEC2. 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 d'expérience à partir du scénario AZ : Application 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 AZ : Application 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-template
{ "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" } ] }