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.
Disponibilité AZ : coupure de courant
Vous pouvez utiliser le AZ Availability: Power Interruption scénario pour induire les symptômes attendus d'une interruption complète de l'alimentation dans une zone de disponibilité (AZ).
Ce scénario peut être utilisé pour démontrer que les applications multi-AZ fonctionnent comme prévu lors d'une interruption de courant unique et complète en AZ. Cela inclut la perte du calcul zonal (Amazon EC2, EKS et ECS), l'absence de redimensionnement du calcul dans l'AZ, la perte de connectivité des sous-réseaux, le basculement RDS, le basculement, l'accès restreint aux ElastiCache compartiments du répertoire S3 Express One Zone et les volumes EBS qui ne répondent pas. Par défaut, les actions pour lesquelles aucune cible n'est trouvée seront ignorées.
Actions
Ensemble, les actions suivantes créent de nombreux symptômes attendus d'une coupure de courant complète dans une seule zone de zone de couverture. Disponibilité AZ : les coupures de courant ne concernent que les services qui devraient être affectés lors d'une seule interruption de courant AZ. Par défaut, le scénario injecte les symptômes de coupure de courant pendant 30 minutes, puis, pendant 30 minutes supplémentaires, les symptômes susceptibles de survenir lors de la restauration.
Stop-Instances
Lors d'une coupure de courant AZ, les instances EC2 de la zone de zone de zone de zone affectée s'arrêteront. Une fois l'alimentation rétablie, les instances redémarrent. AZ Availability: Power Interruptioninclut aws:ec2:stop-instances pour arrêter toutes les instances de l'AZ concernée pendant la durée de l'interruption. Après cette durée, les instances sont redémarrées. L'arrêt des instances EC2 gérées par Amazon EKS entraîne la suppression des pods EKS dépendants. L'arrêt des instances EC2 gérées par Amazon ECS entraîne l'arrêt des tâches ECS dépendantes.
Cette action cible les instances EC2 exécutées dans la zone de disponibilité concernée. Par défaut, il cible les instances avec une balise nommée AzImpairmentPower avec une valeur deStopInstances. Vous pouvez ajouter cette balise à vos instances ou remplacer la balise par défaut par votre propre balise dans le modèle d'expérience. Par défaut, si aucune instance valide n'est trouvée, cette action sera ignorée.
Stop-ASG-Instances
Lors d'une interruption de l'alimentation en zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone Une fois l'alimentation rétablie, les instances redémarrent. AZ Availability: Power Interruptioninclut aws:ec2:stop-instances pour arrêter toutes les instances, y compris celles gérées par Auto Scaling, dans la zone de disponibilité concernée pendant la durée de l'interruption. Après cette durée, les instances sont redémarrées.
Cette action cible les instances EC2 exécutées dans la zone de disponibilité concernée. Par défaut, il cible les instances avec une balise nommée AzImpairmentPower avec une valeur deIceAsg. Vous pouvez ajouter cette balise à vos instances ou remplacer la balise par défaut par votre propre balise dans le modèle d'expérience. Par défaut, si aucune instance valide n'est trouvée, cette action sera ignorée.
Interrompre les lancements d'instances
Lors d'une interruption de l'alimentation en zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone de zone En particulier, les API suivantes seront touchées : ec2:StartInstancesec2:CreateFleet, etec2:RunInstances. AZ Availability: Power Interruption includesinclut aws:ec2:api-insuffisent-instance-capacity error pour empêcher le provisionnement de nouvelles instances dans la zone de disponibilité concernée.
Cette action cible les rôles IAM utilisés pour provisionner des instances. Ceux-ci doivent être ciblés à l'aide d'un ARN. Par défaut, si aucun rôle IAM valide n'est trouvé, cette action est ignorée.
Interrompre la mise à l'échelle ASG
Lors d'une coupure de courant AZ, les appels d'API EC2 effectués par le plan de contrôle Auto Scaling pour récupérer la capacité perdue dans la zone AZ échoueront. En particulier, les API suivantes seront touchées : ec2:StartInstancesec2:CreateFleet, etec2:RunInstances. AZ Availability: Power Interruptioninclut aws:ec2:asg-insuffisent-instance-capacity error pour empêcher le provisionnement de nouvelles instances dans la zone de disponibilité concernée. Cela empêche également Amazon EKS et Amazon ECS de se développer dans la zone de disponibilité concernée.
Cette action cible les groupes Auto Scaling. Par défaut, il cible les groupes Auto Scaling avec une balise nommée AzImpairmentPower avec une valeur deIceAsg. Vous pouvez ajouter cette balise à vos groupes Auto Scaling ou remplacer la balise par défaut par votre propre balise dans le modèle d'expérience. Par défaut, si aucun groupe Auto Scaling valide n'est trouvé, cette action sera ignorée.
Suspendre la connectivité réseau
Lors d'une interruption de courant en zone Z, le réseau en zone Z ne sera pas disponible. Dans ce cas, la mise à jour du DNS par certains services AWS peut prendre jusqu'à quelques minutes afin de refléter le fait que les points de terminaison privés de la zone de disponibilité concernée ne sont pas disponibles. Pendant cette période, les recherches DNS peuvent renvoyer des adresses IP inaccessibles. AZ Availability: Power Interruptioninclut aws:network:disrupt-connectivity pour bloquer toute connectivité réseau pour tous les sous-réseaux de la zone de disponibilité concernée pendant 2 minutes. Cela forcera des délais d'expiration et des actualisations DNS pour la plupart des applications. La fin de l'action au bout de 2 minutes permet la restauration ultérieure du DNS du service régional alors que l'AZ n'est toujours pas disponible.
Cette action cible les sous-réseaux. Par défaut, il cible les clusters dotés d'une balise nommée AzImpairmentPower avec une valeur deDisruptSubnet. Vous pouvez ajouter cette balise à vos sous-réseaux ou remplacer la balise par défaut par votre propre balise dans le modèle d'expérience. Par défaut, si aucun sous-réseau valide n'est trouvé, cette action sera ignorée.
Basculement RDS
Lors d'une coupure de courant AZ, les nœuds RDS de la zone de zone de zone de zone affectée s'arrêteront. Les nœuds RDS de zone de zone de zone de zone de zone de zone affectée seront totalement indisponibles. Pour les clusters multi-AZ, le nœud d'écriture basculera vers une zone de zone de zone de zone de zone non affectée et les nœuds de lecture de la zone de zone de zone de sécurité affectée ne seront pas disponibles. Pour les clusters multi-AZ, AZ Availability: Power Interruption inclut aws:rds:failover-db-cluster pour le basculement si l'auteur se trouve dans la zone de disponibilité concernée.
Cette action cible les clusters RDS. Par défaut, il cible les clusters dotés d'une balise nommée AzImpairmentPower avec une valeur deDisruptRds. Vous pouvez ajouter cette balise à vos clusters ou remplacer la balise par défaut par votre propre balise dans le modèle d'expérience. Par défaut, si aucun cluster valide n'est trouvé, cette action sera ignorée.
Suspendre le groupe ElastiCache de réplication
Lors d'une interruption de courant en zone Z, ElastiCache les nœuds de la zone Z ne sont pas disponibles. AZ Availability: Power Interruptioninclut https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#interrupt-elasticache aws:elasticache:replicationgroup-interrupt-az-power pour terminer les nœuds de la zone de disponibilité concernée. ElastiCache Pendant la durée de l'interruption, aucune nouvelle instance ne sera provisionnée dans la zone de zone de zone de zone affectée, de sorte que le groupe de réplication restera à capacité réduite.
Cette action cible les groupes ElastiCache de réplication. Par défaut, il cible les groupes de réplication avec une balise nommée AzImpairmentPower avec une valeur deElasticacheImpact. Vous pouvez ajouter cette balise à vos groupes de réplication ou remplacer la balise par défaut par votre propre balise dans le modèle d'expérience. Par défaut, si aucun groupe de réplication valide n'est trouvé, cette action est ignorée. Notez que seuls les groupes de réplication dont les nœuds se trouvent dans l'AZ affectée seront considérés comme des cibles valides.
Démarrez ARC Zonal Autoshift
Cinq minutes après le début de la coupure de courant AZ, l'action de restauration déplace aws:arc:start-zonal-autoshift automatiquement le trafic de ressources hors de la zone AZ spécifiée pendant les 25 minutes restantes de la coupure de courant. Après cette durée, le trafic revient à la zone Z d'origine. Notez que lors d'une interruption de courant AZ dans le monde réel, une interruption de courant AWS détectera l'altération et modifiera le trafic des ressources si le décalage automatique est activé. Bien que le moment de ce changement varie, on estime qu'il se produit cinq minutes après le début de la déficience.
Cette action cible les ressources compatibles avec la fonction Autoshift d'Amazon Application Recovery Controller (ARC). Par défaut, il cible les ressources avec la clé AzImpairmentPower et la valeur des balisesRecoverAutoshiftResources. Vous pouvez ajouter cette balise à vos ressources ou remplacer la balise par défaut par votre propre balise dans le modèle d'expérience. Par exemple, vous souhaiterez peut-être utiliser une balise spécifique à l'application. Par défaut, si aucune ressource valide n'est trouvée, cette action sera ignorée.
Mettre EBS en pause I/O
Après une coupure de courant AZ, une fois l'alimentation rétablie, un très faible pourcentage d'instances peut rencontrer des volumes EBS qui ne répondent pas. AZ Availability: Power Interruptioninclut aws:ebs:pause-io pour laisser 1 volume EBS en état de non-réponse.
Par défaut, seuls les volumes définis pour persister après la fermeture de l'instance sont ciblés. Cette action cible les volumes dont la balise est nommée AzImpairmentPower avec une valeur deAPIPauseVolume. Vous pouvez ajouter cette balise à vos volumes ou remplacer la balise par défaut par la vôtre dans le modèle d'expérience. Par défaut, si aucun volume valide n'est trouvé, cette action sera ignorée.
Interrompre la connectivité aux compartiments de répertoires S3 Express One Zone
Lors d'une coupure de courant en zone Z, les données stockées dans les compartiments du répertoire S3 Express One Zone de la zone Z ne sont pas accessibles. AZ Availability : Power Interruption inclut aws:network:disrupt-connectivity pour interrompre la connectivité entre les sous-réseaux et les compartiments du répertoire One Zone dans la zone de disponibilité affectée pendant la durée de l'expérience, ce qui entraîne des délais d'attente pour les opérations de l'API du plan de données du point de terminaison zonal. Utilisez cette action pour tester les interruptions lorsque le calcul est co-localisé avec le stockage dans une zone de disponibilité.
Cette action cible les sous-réseaux. Par défaut, il cible les sous-réseaux avec une balise nommée AzImpairmentPower avec une valeur deDisruptSubnet. Vous pouvez ajouter cette balise à vos sous-réseaux ou remplacer la balise par défaut par votre propre balise dans le modèle d'expérience. Par défaut, si aucun sous-réseau valide n'est trouvé, cette action sera ignorée.
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.
-
Dans la zone de zone de zone ciblée, les Amazon EKS Pods exécutés sur EC2 seront interrompus avec des nœuds de travail EC2 et le démarrage de nouveaux nœuds EC2 sera bloqué. Toutefois, les modules Amazon EKS exécutés sur AWS Fargate ne sont pas pris en charge.
-
Dans la zone de disponibilité ciblée, les tâches Amazon ECS exécutées sur EC2 seront interrompues avec des nœuds de travail EC2 et le démarrage de nouveaux nœuds EC2 sera bloqué. Cependant, les tâches Amazon ECS exécutées sur AWS Fargate ne sont pas prises en charge.
-
Amazon RDS Multi-AZ avec deux instances de base de données de secours lisibles n'est pas pris en charge. Dans ce cas, les instances seront résiliées, RDS basculera et la capacité sera immédiatement réapprovisionnée dans la zone de zone de zone de zone affectée. Le mode veille lisible dans la zone de zone de zone affectée restera disponible.
Exigences
-
Ajoutez l'autorisation requise au rôle AWS FIS d'expérimentation.
-
Les balises de ressources doivent être appliquées aux ressources qui doivent être ciblées par l'expérience. Ceux-ci peuvent utiliser votre propre convention de balisage ou les balises par défaut définies dans le scénario.
Permissions
Le changement automatique de zone ARC utilise un rôle lié au service IAM AWSServiceRoleForZonalAutoshiftPracticeRun pour effectuer le changement de zone en votre nom. Ce rôle utilise la politique AWSZonalAutoshiftPracticeRunSLRPolicy gérée IAM. Il n'est pas nécessaire de créer le rôle manuellement. Lorsque vous créez un modèle d'expérience à partir du scénario d'interruption de l'alimentation AZ dans le Console de gestion AWS AWS CLI, le ou un AWS SDK, ARC crée le rôle lié au service pour vous. Pour plus d'informations, consultez la section Utilisation du rôle lié à un service pour le décalage automatique zonal dans ARC.
La politique suivante accorde à AWS FIS les autorisations nécessaires pour exécuter une expérience avec le AZ Availability: Power Interruption scénario. Cette politique doit être associée au rôle d'expérimentation.
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 commande
{ "targets": { "IAM-role": { "resourceType": "aws:iam:role", "resourceArns": [], "selectionMode": "ALL" }, "EBS-Volumes": { "resourceType": "aws:ec2:ebs-volume", "resourceTags": { "AzImpairmentPower": "ApiPauseVolume" }, "selectionMode": "COUNT(1)", "parameters": { "availabilityZoneIdentifier": "us-east-1a" }, "filters": [ { "path": "Attachments.DeleteOnTermination", "values": [ "false" ] } ] }, "EC2-Instances": { "resourceType": "aws:ec2:instance", "resourceTags": { "AzImpairmentPower": "StopInstances" }, "filters": [ { "path": "State.Name", "values": [ "running" ] }, { "path": "Placement.AvailabilityZone", "values": [ "us-east-1a" ] } ], "selectionMode": "ALL" }, "ASG": { "resourceType": "aws:ec2:autoscaling-group", "resourceTags": { "AzImpairmentPower": "IceAsg" }, "selectionMode": "ALL" }, "ASG-EC2-Instances": { "resourceType": "aws:ec2:instance", "resourceTags": { "AzImpairmentPower": "IceAsg" }, "filters": [ { "path": "State.Name", "values": [ "running" ] }, { "path": "Placement.AvailabilityZone", "values": [ "us-east-1a" ] } ], "selectionMode": "ALL" }, "Subnet": { "resourceType": "aws:ec2:subnet", "resourceTags": { "AzImpairmentPower": "DisruptSubnet" }, "filters": [ { "path": "AvailabilityZone", "values": [ "us-east-1a" ] } ], "selectionMode": "ALL", "parameters": {} }, "RDS-Cluster": { "resourceType": "aws:rds:cluster", "resourceTags": { "AzImpairmentPower": "DisruptRds" }, "selectionMode": "ALL", "parameters": { "writerAvailabilityZoneIdentifiers": "us-east-1a" } }, "ElastiCache-Cluster": { "resourceType": "aws:elasticache:replicationgroup", "resourceTags": { "AzImpairmentPower": "DisruptElasticache" }, "selectionMode": "ALL", "parameters": { "availabilityZoneIdentifier": "us-east-1a" } } }, "actions": { "Pause-Instance-Launches": { "actionId": "aws:ec2:api-insufficient-instance-capacity-error", "parameters": { "availabilityZoneIdentifiers": "us-east-1a", "duration": "PT30M", "percentage": "100" }, "targets": { "Roles": "IAM-role" } }, "Pause-EBS-IO": { "actionId": "aws:ebs:pause-volume-io", "parameters": { "duration": "PT30M" }, "targets": { "Volumes": "EBS-Volumes" }, "startAfter": [ "Stop-Instances", "Stop-ASG-Instances" ] }, "Stop-Instances": { "actionId": "aws:ec2:stop-instances", "parameters": { "completeIfInstancesTerminated": "true", "startInstancesAfterDuration": "PT30M" }, "targets": { "Instances": "EC2-Instances" } }, "Pause-ASG-Scaling": { "actionId": "aws:ec2:asg-insufficient-instance-capacity-error", "parameters": { "availabilityZoneIdentifiers": "us-east-1a", "duration": "PT30M", "percentage": "100" }, "targets": { "AutoScalingGroups": "ASG" } }, "Stop-ASG-Instances": { "actionId": "aws:ec2:stop-instances", "parameters": { "completeIfInstancesTerminated": "true", "startInstancesAfterDuration": "PT30M" }, "targets": { "Instances": "ASG-EC2-Instances" } }, "Pause-network-connectivity": { "actionId": "aws:network:disrupt-connectivity", "parameters": { "duration": "PT2M", "scope": "all" }, "targets": { "Subnets": "Subnet" } }, "Failover-RDS": { "actionId": "aws:rds:failover-db-cluster", "parameters": {}, "targets": { "Clusters": "RDS-Cluster" } }, "Pause-ElastiCache": { "actionId": "aws:elasticache:replicationgroup-interrupt-az-power", "parameters": { "duration": "PT30M" }, "targets": { "ReplicationGroups": "ElastiCache-Cluster" } } }, "stopConditions": [ { "source": "aws:cloudwatch:alarm", "value": "" } ], "roleArn": "", "tags": { "Name": "AZ Impairment: Power Interruption" }, "logConfiguration": { "logSchemaVersion": 2 }, "experimentOptions": { "accountTargeting": "single-account", "emptyTargetResolutionMode": "skip" }, "description": "Affect multiple resource types in a single AZ, targeting by tags and explicit ARNs, to approximate power interruption in one AZ." }