Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Disponibilidad de AZ: interrupción del suministro eléctrico
Puede utilizar el escenario AZ Availability: Power Interruption para provocar los síntomas esperados de una interrupción total del suministro eléctrico en una zona de disponibilidad (AZ).
Este escenario se puede utilizar para demostrar que las aplicaciones con varias AZ funcionan según lo esperado en una interrupción completa del suministro eléctrico en zonas de disponibilidad. Esto incluye la pérdida de procesamiento zonal (Amazon EC2, EKS y ECS), la falta de escalado del procesamiento en la zona de Arizona, la pérdida de conectividad de subred, la conmutación por error de RDS, la conmutación por error, la dificultad de acceso a los buckets de directorio de S3 Express One Zone y los volúmenes de EBS que ElastiCache no responden. De forma predeterminada, se omiten las acciones para las que no se encuentre ningún objetivo.
Acciones
En conjunto, las siguientes acciones crean muchos de los síntomas esperados en una interrupción total del suministro eléctrico en una única AZ. Disponibilidad AZ: la interrupción del suministro eléctrico solo afecta a los servicios que se espera que se vean afectados en una interrupción del suministro eléctrico de la AZ. De forma predeterminada, el escenario inyecta síntomas de interrupción del suministro eléctrico durante 30 minutos y, a continuación, durante otros 30 minutos, inyecta síntomas que pueden presentarse durante la recuperación.
Stop-Instances
En una interrupción del suministro eléctrico de la AZ, las instancias de EC2 de la AZ afectada se cerrarán. Una vez restablecido el suministro, las instancias se reiniciarán. AZ Availability: Power Interruption incluye aws:ec2:stop-instances para detener todas las instancias de la AZ afectada durante el tiempo que dure la interrupción. Transcurrido ese tiempo, las instancias se reinician. Al detener las instancias de EC2 administradas por Amazon EKS, se eliminan los pods de EKS dependientes. Al detener las instancias de EC2 administradas por Amazon ECS, se detienen las tareas de ECS dependientes.
El objetivo de esta acción son las instancias de EC2 que se ejecutan en la AZ afectada. De forma predeterminada, su objetivo son las instancias con una etiqueta AzImpairmentPower que tiene un valor de StopInstances. Puede agregar esta etiqueta a sus instancias o reemplazar la etiqueta predeterminada por la suya propia en la plantilla de experimento. De forma predeterminada, si no se encuentran instancias válidas, se omitirá esta acción.
Stop-ASG-Instances
En una interrupción del suministro eléctrico AZ, las instancias de EC2 administradas por un grupo de escalado automático de la AZ afectada se cerrarán. Una vez restablecido el suministro, las instancias se reiniciarán. AZ Availability: Power Interruption incluye aws:ec2:stop-instances para detener todas las instancias, incluidas las administradas por escalado automático, de la AZ afectada durante el tiempo que dure la interrupción. Transcurrido ese tiempo, las instancias se reinician.
El objetivo de esta acción son las instancias de EC2 que se ejecutan en la AZ afectada. De forma predeterminada, su objetivo son las instancias con una etiqueta AzImpairmentPower que tiene un valor de IceAsg. Puede agregar esta etiqueta a sus instancias o reemplazar la etiqueta predeterminada por la suya propia en la plantilla de experimento. De forma predeterminada, si no se encuentran instancias válidas, se omitirá esta acción.
Pausa de lanzamientos de instancias
Durante una interrupción del suministro eléctrico de la AZ se producirán errores en las llamadas a la API de EC2 para aprovisionar capacidad en la AZ. En particular, se verán afectadas las siguientes API: ec2:StartInstances, ec2:CreateFleet y ec2:RunInstances. AZ Availability: Power Interruption includes incluye aws:ec2:api-insufficient-instance-capacity-error para evitar que se aprovisionen nuevas instancias en la AZ afectada.
El objetivo de esta acción son los roles de IAM que se utilizan para aprovisionar instancias. Debe hacerse referencia a estos mediante un ARN. De forma predeterminada, si no se encuentran roles de IAM válidos, se omitirá esta acción.
Pausa del escalado de ASG
Durante una interrupción del suministro eléctrico de la AZ fallarán las llamadas a la API de EC2 realizadas por el plano de control de escalado automático para recuperar la capacidad perdida en la AZ. En particular, se verán afectadas las siguientes API: ec2:StartInstances, ec2:CreateFleet y ec2:RunInstances. AZ Availability: Power Interruption incluye aws:ec2:asg-insufficient-instance-capacity-error para evitar que se aprovisionen nuevas instancias en la AZ afectada. Esto también impide que Amazon EKS y Amazon ECS se escalen en la AZ afectada.
El objetivo de esta acción son los grupos de escalado automático. De forma predeterminada, su objetivo son los grupos de escalado automático con una etiqueta AzImpairmentPower que tiene un valor de IceAsg. Puede agregar esta etiqueta a sus grupos de escalado automático o reemplazar la etiqueta predeterminada por la suya propia en la plantilla de experimento. De forma predeterminada, si no se encuentran grupos de escalado automático válidos, se omitirá esta acción.
Pausa de conectividad de red
Durante una interrupción del suministro eléctrico de la AZ, la red no estará disponible en la AZ. Cuando esto ocurre, algunos servicios de AWS pueden tardar unos minutos en actualizar DNS para reflejar que los puntos de conexión privados de la AZ afectada no están disponibles. En este tiempo es posible que las búsquedas de DNS devuelvan direcciones IP inaccesibles. AZ Availability: Power Interruption incluye aws:network:disrupt-connectivity para bloquear toda la conectividad de red de todas las subredes de la AZ afectada durante 2 minutos. Esto provocará tiempos de espera y actualizaciones de DNS para la mayoría de las aplicaciones. Si se pone fin a la acción transcurridos 2 minutos, se podrá recuperar posteriormente el DNS de servicio regional mientras la AZ sigue sin estar disponible.
El objetivo de esta acción son las subredes. De forma predeterminada, su objetivo son los clústeres con una etiqueta AzImpairmentPower que tiene un valor de DisruptSubnet. Puede agregar esta etiqueta a sus subredes o reemplazar la etiqueta predeterminada por la suya propia en la plantilla de experimento. De forma predeterminada, si no se encuentran subredes válidas, se omitirá esta acción.
RDS de conmutación por error
En una interrupción del suministro eléctrico AZ, los nodos RDS de la AZ afectada se cerrarán. Los nodos AZ RDS únicos de la AZ afectada no estarán disponibles por completo. En el caso de clústeres con varias AZ, el nodo escritor realizará una conmutación por error a una AZ no afectada y los nodos lectores de la AZ afectada no estarán disponibles. En el caso de clústeres con varias AZ, AZ Availability: Power Interruption incluye aws:rds:failover-db-cluster para realizar conmutación por error si el escritor se encuentra en la AZ afectada.
El objetivo de esta acción son los clústeres de RDS. De forma predeterminada, su objetivo son los clústeres con una etiqueta AzImpairmentPower que tiene un valor de DisruptRds. Puede agregar esta etiqueta a sus clústeres o reemplazar la etiqueta predeterminada por la suya propia en la plantilla de experimento. De forma predeterminada, si no se encuentran clústeres válidos, se omitirá esta acción.
Pausar el grupo de replicación ElastiCache
Durante una interrupción del suministro eléctrico en la zona de disponibilidad, ElastiCache los nodos de la zona de disponibilidad no están disponibles. AZ Availability: Power Interruptionincluye https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#interrupt-elasticache aws:elasticache:replicationgroup-interrupt-az-power para cerrar los nodos de la zona de disponibilidad afectada. ElastiCache Mientras dure la interrupción, las nuevas instancias no se aprovisionarán en la zona de disponibilidad afectada, por lo que el grupo de replicación mantendrá su capacidad reducida.
Esta acción está dirigida a los grupos ElastiCache de replicación. De forma predeterminada, se dirige a los grupos de replicación con una etiqueta cuyo nombre AzImpairmentPower tiene un valor deElasticacheImpact. Puede agregar esta etiqueta a sus grupos de replicación o reemplazar la etiqueta predeterminada por su propia etiqueta en la plantilla del experimento. De forma predeterminada, si no se encuentra ningún grupo de replicación válido, se omitirá esta acción. Tenga en cuenta que solo los grupos de replicación con nodos en la zona de disponibilidad afectada se considerarán objetivos válidos.
Inicie ARC Zonal Autoshift
Cinco minutos después de que comience la interrupción del suministro eléctrico en la zona de disponibilidad, la acción de recuperación desvía aws:arc:start-zonal-autoshift automáticamente el tráfico de recursos de la zona de disponibilidad especificada durante los 25 minutos restantes de la interrupción del suministro eléctrico. Transcurrido ese tiempo, el tráfico vuelve a la AZ original. Tenga en cuenta que, en condiciones reales, una interrupción del suministro eléctrico en Arizona AWS detectará el deterioro y desplazará el tráfico de recursos si está activado el cambio automático. Si bien el horario de este turno varía, se estima que ocurrirá cinco minutos después del inicio de la avería.
Esta acción se dirige a los recursos que admiten el cambio automático del Amazon Application Recovery Controller (ARC). De forma predeterminada, se dirige a los recursos con la clave y el valor de la etiqueta. AzImpairmentPower RecoverAutoshiftResources Puedes añadir esta etiqueta a tus recursos o reemplazar la etiqueta predeterminada por tu propia etiqueta en la plantilla del experimento. Por ejemplo, es posible que desee utilizar una etiqueta específica de la aplicación. De forma predeterminada, si no se encuentran recursos válidos, se omitirá esta acción.
Pausa EBS I/O
Tras una interrupción del suministro eléctrico de la AZ, una vez restablecido el suministro, es posible que un porcentaje muy pequeño de instancias experimente volúmenes de EBS que no responden. AZ Availability: Power Interruption incluye aws:ebs:pause-io para dejar 1 volumen de EBS en un estado de no respuesta.
De forma predeterminada, solo se seleccionan los volúmenes configurados para persistir una vez terminada la instancia. El objetivo de esta acción son los volúmenes con una etiqueta AzImpairmentPower que tiene un valor de APIPauseVolume. Puede agregar esta etiqueta a sus volúmenes o reemplazar la etiqueta predeterminada por la suya propia en la plantilla de experimento. De forma predeterminada, si no se encuentran volúmenes válidos, se omitirá esta acción.
Interrumpa la conectividad con los depósitos de directorios One Zone de S3 Express
Durante una interrupción del suministro eléctrico en Arizona, no se puede acceder a los datos almacenados en los depósitos de directorios de S3 Express One Zone en la zona de Arizona. Disponibilidad en Arizona: Power Interruption incluye aws:network:disrupt-connectivity para interrumpir la conectividad entre las subredes y los depósitos de directorio de una zona en la zona de disponibilidad afectada durante todo el experimento, lo que provoca que se agoten las operaciones de API del plano de datos de puntos finales zonales. Utilice esta acción para probar las interrupciones cuando la computación se ubica junto con el almacenamiento en una zona de disponibilidad.
El objetivo de esta acción son las subredes. De forma predeterminada, se dirige a las subredes con una etiqueta cuyo nombre AzImpairmentPower tiene un valor de. DisruptSubnet Puede agregar esta etiqueta a sus subredes o reemplazar la etiqueta predeterminada por la suya propia en la plantilla de experimento. De forma predeterminada, si no se encuentran subredes válidas, se omitirá esta acción.
Limitaciones
-
Este escenario no incluye condiciones de parada. Deben agregarse a la plantilla de experimento las condiciones de parada correctas para su aplicación.
-
En la zona de disponibilidad (AZ) de destino, los pods de Amazon EKS que se ejecutan en EC2 terminarán con los nodos de trabajo de EC2 y se bloqueará el inicio de nuevos nodos de EC2. Sin embargo, no se admiten pods de Amazon EKS que se ejecutan en AWS Fargate.
-
En la zona de disponibilidad (AZ) de destino, las tareas de Amazon ECS que se ejecutan en EC2 terminarán con los nodos de trabajo de EC2 y se bloqueará el inicio de nuevos nodos de EC2. Sin embargo, no se admiten tareas de Amazon ECS que se ejecutan en AWS Fargate.
-
No se admite Amazon RDS Multi-AZ con dos instancias de base de datos en espera legibles. En este caso, las instancias se terminarán, RDS realizará conmutación por error y la capacidad se volverá a aprovisionar inmediatamente en la AZ afectada. La espera legible en la AZ afectada seguirá disponible.
Requisitos
-
Añada el permiso necesario al rol del AWS FIS experimento.
-
Se deben aplicar etiquetas de recursos a recursos que no son el objetivo del experimento. Pueden ser etiquetas que usen su propia convención de etiquetado o etiquetas predeterminadas definidas en el escenario.
Permisos
El cambio automático zonal de ARC utiliza una función vinculada al servicio de IAM AWSServiceRoleForZonalAutoshiftPracticeRun para realizar el cambio zonal en su nombre. Esta función utiliza la política gestionada por IAM. AWSZonalAutoshiftPracticeRunSLRPolicy No es necesario crear el rol manualmente. Al crear una plantilla de experimento a partir del escenario de interrupción del Consola de administración de AWS suministro eléctrico de Arizona en el AWS CLI AWS SDK, ARC crea automáticamente el rol vinculado al servicio. Para obtener más información, consulte Uso del rol vinculado al servicio para el cambio automático zonal en ARC.
La siguiente política otorga a AWS FIS los permisos necesarios para ejecutar un experimento con el escenario AZ Availability: Power Interruption. Esta política debe estar asociada al rol de experimento.
Contenido del escenario
El siguiente contenido define el escenario. Este JSON se puede guardar y usar para crear una plantilla de experimento mediante el comando create-experiment-template
{ "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." }