AZ: Application Slowdown - AWS Servicio de inyección de averías

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.

AZ: Application Slowdown

Puede utilizar el escenario AZ: ralentización de las aplicaciones para introducir una latencia adicional entre los recursos de una única zona de disponibilidad (AZ). Esta latencia provoca muchos de los síntomas de una ralentización de las aplicaciones, una interrupción parcial, que a veces se denomina fallo gris. Añade latencia a los flujos de red entre los recursos de destino. Los flujos de red representan el tráfico entre los recursos informáticos: los paquetes de datos que contienen solicitudes, respuestas y otras comunicaciones entre sus servidores, contenedores y servicios. El escenario puede ayudar a validar las configuraciones de observabilidad, ajustar los umbrales de alarma, descubrir la sensibilidad de las aplicaciones a las ralentizaciones y poner en práctica decisiones operativas críticas, como la evacuación de zonas urbanizadas.

De forma predeterminada, el escenario añade 200 ms de latencia al 100% de los flujos de red entre los recursos de destino dentro de la zona de disponibilidad seleccionada durante 30 minutos. Puede usar el cuadro de diálogo Editar parámetros compartidos de la consola de AWS FIS para ajustar los siguientes parámetros a nivel de escenario, que luego se aplican a las acciones subyacentes:

  • Zona de disponibilidad: puede seleccionar la zona de disponibilidad que desee reducir en el escenario.

  • Milisegundos (ms) de latencia: ajústelo en función de la sensibilidad y las necesidades de su aplicación. Puedes establecer una latencia más baja para las aplicaciones más sensibles o más alta para probar la gestión del tiempo de espera, por ejemplo. Considere la posibilidad de utilizar múltiplos de la latencia de su aplicación actual como referencia.

  • Porcentaje de flujos: redúzcalo para perjudicar a un subconjunto del tráfico. Por ejemplo, puede añadir una latencia de 200 ms que afecte al 25% de los flujos de la red para realizar pruebas aún más sutiles.

  • Duración: establece la duración del experimento. Puedes acortarlo para realizar pruebas más rápidas o realizar pruebas prolongadas durante más tiempo. Por ejemplo, establece la duración en 2 horas para poner a prueba tus mecanismos de recuperación en condiciones adversas.

  • Segmentación de recursos: puede definir los recursos de destino para el escenario general mediante etiquetas (para instancias de EC2 o tareas de ECS en EC2 o Fargate) o etiquetas (para pods de EKS en EC2). Puede especificar sus propias etiquetas y rótulos o utilizar los valores predeterminados que se proporcionan en el escenario. Si no desea utilizar etiquetas o rótulos, puede editar la acción para segmentar los recursos especificando otros parámetros.

  • Personalización: si no quiere dirigirse a los recursos de EC2 o ECS, puede dejar las acciones con las etiquetas predeterminadas. El experimento no encontrará ningún recurso al que apuntar y se omitirá la acción. Sin embargo, si no quieres centrarte en los recursos de EKS, debes eliminar por completo la acción y el objetivo de EKS del escenario, ya que es necesario proporcionar un identificador de clúster de EKS. Para una personalización aún más detallada, puedes modificar directamente las acciones individuales de la plantilla del experimento.

Acciones

En conjunto, las siguientes acciones ayudan a crear muchos de los síntomas de la ralentización de una aplicación en una única zona de disponibilidad al introducir una latencia adicional en los flujos de red, que luego se propaga por la aplicación. Estas acciones se ejecutan en paralelo y, de forma predeterminada, cada una añade una latencia de 200 ms durante 30 minutos. Tras este período, la latencia vuelve a los niveles normales. El escenario necesita al menos uno de los siguientes tipos de recursos para ejecutarse: instancia EC2, tarea ECS o pod EKS.

Latencia de red ECS

AZ: Application Slowdown incluye aws:ecs: task-network-latency para introducir latencia en las tareas de ECS. La acción se dirige a las tareas de la zona de disponibilidad seleccionada. De forma predeterminada, se orienta a las tareas con una etiqueta denominada AZApplicationSlowdown con un valor deLatencyForECS. Puedes reemplazar la etiqueta predeterminada por la tuya propia o añadir la etiqueta de escenario a tus tareas. Si no se encuentra ninguna tarea válida, se omitirá esta acción. Antes de realizar un experimento en ECS, debe seguir los pasos de configuración para las acciones de las tareas de ECS.

Latencia de red EKS

AZ: Application Slowdown incluye aws:eks: pod-network-latency para introducir la latencia en los pods de EKS. La acción se dirige a los pods de la AZ seleccionada. De forma predeterminada, se dirige a los pods de un clúster que tienen etiquetas con el formato key=value. La etiqueta predeterminada proporcionada es. AZApplicationSlowdown=LatencyForEKS Puedes reemplazar la etiqueta predeterminada por la tuya propia o añadir esta etiqueta a tus cápsulas. Si no se encuentra ningún pod válido, se omitirá esta acción. Antes de realizar un experimento en EKS, debes seguir los pasos de configuración de las acciones del módulo EKS.

Latencia de red EC2

AZ: Application Slowdown utiliza la acción aws:ssm:send-command para ejecutar el documento -Network-Latency-Sources a fin de introducir la AWSFIS-Run latencia en las instancias de EC2. La acción se dirige a las instancias de la zona de disponibilidad seleccionada. De forma predeterminada, se dirige a las instancias con una etiqueta denominada AZApplicationSlowdown con un valor deLatencyForEC2. Puedes reemplazar la etiqueta predeterminada por la tuya propia o añadir esta etiqueta a tus instancias. Si no se encuentra ninguna instancia válida, se omitirá esta acción. Antes de ejecutar un experimento en EC2 mediante SSM, debe configurar el agente de AWS Systems Manager.

Limitaciones

  • Este escenario no incluye condiciones de parada. Deben agregarse a la plantilla de experimento las condiciones de parada correctas para su aplicación.

Requisitos

  • Añada los permisos necesarios a la función de experimento de AWS FIS.

  • Debe dirigirse a uno o más recursos de cualquiera de los tres tipos siguientes de la zona de disponibilidad seleccionada: instancias de EC2, tareas de ECS o módulos de EKS.

  • Todos los objetivos del escenario deben estar en la misma VPC.

Permisos

Para ejecutar este escenario, necesita una función de IAM con una política de confianza que permita a la FIS asumir la función y las políticas gestionadas para los tipos de recursos a los que se dirige el experimento: EC2, ECS y EKS. Al crear una plantilla de experimento a partir del escenario AZ: ralentización de aplicaciones, FIS crea el rol automáticamente con la política de confianza y las siguientes políticas gestionadas por AWS:

Si utiliza un rol de IAM existente para ejecutar el escenario AZ: ralentización de aplicaciones, puede adjuntar la siguiente política para conceder a AWS FIS los permisos necesarios:

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

Contenido del escenario

El siguiente contenido define el escenario. Este JSON se puede guardar y utilizar para crear una plantilla de experimento mediante el create-experiment-templatecomando de la interfaz de línea de comandos de AWS (AWS CLI). Para ver la versión más reciente del escenario, visite la biblioteca de escenarios de la consola FIS y vaya a la pestaña Contenido.

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