Cross-AZ: Traffic 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.

Cross-AZ: Traffic Slowdown

Puede utilizar el escenario Cross-AZ: ralentización del tráfico para provocar la pérdida de paquetes a fin de interrumpir y ralentizar el tráfico entre las zonas de disponibilidad (). AZs La pérdida de paquetes perjudica la comunicación entre zonas de disponibilidad (Cross-AZ), lo que se conoce como fallo gris. Inyecta la pérdida de paquetes en 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 y las dependencias de las aplicaciones en la comunicación entre zonas de disponibilidad y poner en práctica decisiones operativas críticas, como la evacuación de zonas de disponibilidad.

De forma predeterminada, el escenario provoca una pérdida de paquetes del 15% al 100% de los flujos de red salientes para los recursos de destino procedentes 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 y la pérdida de paquetes se transferirá de esa zona a la otra de la AZs región.

  • Pérdida de paquetes: ajuste la pérdida de paquetes a un valor inferior para las pruebas de interrupciones leves, como un 5%, o más para comprobar una degradación grave de la comunicación y a los mecanismos de recuperación, como el 50% o incluso el 100% para comprobar el impacto total en la conectividad.

  • Porcentaje de flujos: redúzcalo para perjudicar a un subconjunto del tráfico. Por ejemplo, puede provocar una pérdida de paquetes del 15% 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 ayudar a probar los 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 los síntomas de una ralentización del tráfico AZs al introducir la pérdida de paquetes en la comunicación saliente desde la zona de destino a otra AZs de la región a nivel de red. Estas acciones se ejecutan en paralelo y, de forma predeterminada, cada una de ellas provoca una pérdida de paquetes del 15% durante 30 minutos. Tras este período, la comunicación vuelve a la normalidad. El escenario necesita al menos uno de los siguientes tipos de recursos en la zona de disponibilidad seleccionada para ejecutarse: EC2 instancia, tarea de ECS o pod de EKS.

Pérdida de paquetes de red ECS

Cross-AZ: Traffic Slowdown incluye aws:ecs: task-network-packet-loss para reducir la pérdida de paquetes a las tareas de ECS. La acción se centra en las tareas de la zona de disponibilidad seleccionada y dificulta su comunicación saliente con todas las demás de la región. AZs Puedes personalizar aún más el alcance del impacto editando la acción y añadiéndola o quitándola AZs del Sources campo. De forma predeterminada, se dirige a las tareas con una etiqueta cuyo nombre CrossAZTrafficSlowdown tiene un valor dePacketLossForECS. 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.

Pérdida de paquetes de red EKS

Cross-AZ: Traffic Slowdown incluye aws:eks: pod-network-packet-loss para provocar la pérdida de paquetes en los pods de EKS. La acción se dirige a los pods de la AZ seleccionada y dificulta su comunicación saliente con todos los demás de la región. AZs Puedes personalizar aún más el alcance del impacto editando la acción y añadiéndola o quitándola AZs del Sources campo. 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. CrossAZTraffic=PacketLossForEKS 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 Pérdida de paquetes de red

Cross-AZ: Traffic Slowdown utiliza la acción aws:ssm:send-command para ejecutar el documento AWSFIS-Run-Network-Packet-Loss-Sources a fin de provocar la pérdida de paquetes en algunos casos e impedir su comunicación saliente con el resto de la región. EC2 AZs Puede personalizar aún más el alcance del impacto editando la acción y añadiéndola o quitándola del campo. AZs Sources 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 CrossAZTrafficSlowdown con un valor dePacketLossForEC2. 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 Cross-AZ: ralentización del tráfico, FIS crea el rol automáticamente con la política de confianza y las siguientes políticas gestionadas por AWS:

Si utiliza una función de IAM existente para ejecutar el escenario Cross-AZ: ralentización del tráfico, 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": "Cross-AZ: Traffic Slowdown" }, "description": "Inject packet loss to disrupt and slow down traffic between AZs.", "actions": { "PacketLossForEC2": { "actionId": "aws:ssm:send-command", "parameters": { "duration": "PT30M", "documentArn": "arn:aws:ssm:us-east-1::document/AWSFIS-Run-Network-Packet-Loss-Sources", "documentParameters": "{\"Sources\":\"us-east-1b,us-east-1c,us-east-1d,us-east-1e,us-east-1f\",\"LossPercent\":\"15\",\"Interface\":\"DEFAULT\",\"TrafficType\":\"egress\",\"DurationSeconds\":\"1800\",\"FlowsPercent\":\"100\",\"InstallDependencies\":\"True\"}" }, "targets": { "Instances": "TargetsForEC2" } }, "PacketLossForECS": { "actionId": "aws:ecs:task-network-packet-loss", "parameters": { "sources": "us-east-1b,us-east-1c,us-east-1d,us-east-1e,us-east-1f", "lossPercent": "15", "duration": "PT30M", "flowsPercent": "100", "installDependencies": "true", "useEcsFaultInjectionEndpoints": "true" }, "targets": { "Tasks": "TargetsForECS" } }, "PacketLossForEKS": { "actionId": "aws:eks:pod-network-packet-loss", "parameters": { "sources": "us-east-1b,us-east-1c,us-east-1d,us-east-1e,us-east-1f", "lossPercent": "15", "duration": "PT30M", "flowsPercent": "100", "interface": "DEFAULT", "kubernetesServiceAccount": "fis-service-account" }, "targets": { "Pods": "TargetsForEKS" } } }, "targets": { "TargetsForEC2": { "filters": [ { "path": "Placement.AvailabilityZone", "values": [ "us-east-1a" ] } ], "resourceTags": { "CrossAZTrafficSlowdown": "PacketLossForEC2" }, "resourceType": "aws:ec2:instance", "selectionMode": "ALL" }, "TargetsForECS": { "filters": [ { "path": "AvailabilityZone", "values": [ "us-east-1a" ] } ], "resourceTags": { "CrossAZTrafficSlowdown": "PacketLossForECS" }, "resourceType": "aws:ecs:task", "selectionMode": "ALL" }, "TargetsForEKS": { "parameters": { "availabilityZoneIdentifier": "us-east-1a", "clusterIdentifier": "", "namespace": "default", "selectorType": "labelSelector", "selectorValue": "CrossAZTrafficSlowdown=PacketLossForEKS" }, "resourceType": "aws:eks:pod", "selectionMode": "ALL" } }, "experimentOptions": { "accountTargeting": "single-account", "emptyTargetResolutionMode": "skip" }, "stopConditions": [ { "source": "none" } ] }