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 cuánto tiempo durará el 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 objetivo para el escenario general mediante etiquetas (para EC2 instancias o tareas de ECS en Fargate) EC2 o etiquetas (para módulos de EKS activados). 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 quieres segmentar los recursos EC2 o los de ECS, puedes 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, ya que introducen una latencia adicional en los flujos de la red, que luego se propaga por toda la aplicación. Estas acciones se ejecutan en paralelo y cada una añade una latencia de 200 ms durante 30 minutos de forma predeterminada. 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: EC2 instancia, tarea de ECS o pod de 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 cuyo nombre AZApplicationSlowdown tiene 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 que se proporciona 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.

EC2 Latencia de red

AZ: Application Slowdown utiliza la acción aws:ssm:send-command para ejecutar el documento -Network-Latency-Sources a fin de introducir la latencia en las instanciasAWSFIS-Run. 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 realizar un experimento sobre el EC2 uso de 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: EC2 instancias, 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" } ] }