View a markdown version of this page

Cross-AZ: rallentamento del traffico - AWS Servizio di iniezione guasti

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Cross-AZ: rallentamento del traffico

È possibile utilizzare lo scenario Cross-AZ: Traffic Slowdown per iniettare la perdita di pacchetti e interrompere e rallentare il traffico tra le zone di disponibilità (AZ). La perdita di pacchetti compromette la comunicazione cross-AZ, un'interruzione parziale, a volte nota come errore grigio. Inietta la perdita di pacchetti nei flussi di rete tra le risorse di destinazione. I flussi di rete rappresentano il traffico tra le risorse informatiche: i pacchetti di dati che trasportano richieste, risposte e altre comunicazioni tra server, contenitori e servizi. Lo scenario può aiutare a convalidare le impostazioni di osservabilità, regolare le soglie di allarme, scoprire la sensibilità e le dipendenze delle applicazioni nella comunicazione inter-AZ e prendere decisioni operative critiche come l'evacuazione AZ.

Per impostazione predefinita, lo scenario comporta una perdita di pacchetti del 15% sul 100% dei flussi di rete in uscita per le risorse di destinazione dall'AZ selezionato per una durata di 30 minuti. Puoi utilizzare la finestra di dialogo Modifica parametri condivisi nella console AWS FIS per regolare i seguenti parametri a livello di scenario, che poi si applicano alle azioni sottostanti:

  • Zona di disponibilità: puoi selezionare l'AZ da compromettere e la perdita di pacchetti verrà iniettata da tale AZ alle altre AZ all'interno della regione.

  • Perdita di pacchetti: riduci la perdita di pacchetti in caso di lievi interruzioni, ad esempio 5% o più, per testare meccanismi di deterioramento e ripristino gravi della comunicazione, ad esempio il 50% o addirittura il 100% per un impatto totale sulla connettività.

  • Percentuale dei flussi: riduci per compromettere un sottoinsieme del traffico. Ad esempio, puoi iniettare una perdita di pacchetti del 15% che interessa il 25% dei flussi di rete per test ancora più accurati.

  • Durata: imposta la durata dell'esperimento. È possibile abbreviare i test per velocizzare i test o eseguire test prolungati più lunghi. Ad esempio, imposta la durata su 2 ore per aiutare a testare i meccanismi di recupero in condizioni compromesse.

  • Targeting delle risorse: puoi definire le risorse target per lo scenario complessivo utilizzando tag (per le istanze EC2 o le attività ECS su EC2 o Fargate) o etichette (per i pod EKS su EC2). È possibile specificare tag ed etichette personalizzati o utilizzare le impostazioni predefinite fornite nello scenario. Se non desideri utilizzare tag o etichette, puoi modificare l'azione per indirizzare le risorse specificando altri parametri.

  • Personalizzazione: se non desideri indirizzare le risorse EC2 o ECS, puoi lasciare le azioni con i tag predefiniti. L'esperimento non troverà alcuna risorsa da scegliere come target e l'azione verrà saltata. Tuttavia, se non si desidera utilizzare come target le risorse EKS, è necessario rimuovere completamente l'azione e il target EKS dallo scenario, poiché è necessario fornire un identificatore del cluster EKS. Per una personalizzazione ancora più granulare, puoi modificare le singole azioni direttamente nel modello di esperimento.

Azioni

Insieme, le seguenti azioni contribuiscono a creare i sintomi di un rallentamento del traffico tra le AZ introducendo la perdita di pacchetti nelle comunicazioni in uscita dall'AZ di destinazione ad altri AZ della regione a livello di rete. Queste azioni vengono eseguite in parallelo e, per impostazione predefinita, ciascuna causa una perdita di pacchetti del 15% per 30 minuti. Dopo questo periodo, la comunicazione torna alla normalità. Lo scenario richiede almeno uno dei seguenti tipi di risorse nell'AZ selezionato per essere eseguito: istanza EC2, task ECS o pod EKS.

Perdita di pacchetti di rete ECS

Cross-AZ: Il rallentamento del traffico include aws:ecs:task-network-packet-loss per iniettare la perdita di pacchetti per le attività ECS. L'azione è mirata alle attività nell'AZ selezionato e ne ostacola la comunicazione in uscita con tutte le altre AZ della regione. È possibile personalizzare ulteriormente l'ambito dell'impatto modificando l'azione e aggiungendo o rimuovendo gli AZ dal campo. Sources Per impostazione predefinita, si rivolge alle attività con un tag denominato CrossAZTrafficSlowdown con il valore diPacketLossForECS. Puoi sostituire il tag predefinito con il tuo o aggiungere il tag dello scenario alle tue attività. Se non viene trovata alcuna attività valida, questa azione verrà ignorata. Prima di eseguire un esperimento su ECS, è necessario seguire i passaggi di configurazione per le azioni delle attività ECS.

Perdita di pacchetti di rete EKS

Cross-AZ: Traffic Slowdown include aws:eks:pod-network-packet-loss per iniettare la perdita di pacchetti per i pod EKS. L'azione si rivolge ai pod nell'AZ selezionato e ne compromette la comunicazione in uscita con tutti gli altri AZ della regione. Puoi personalizzare ulteriormente l'ambito dell'impatto modificando l'azione e aggiungendo o rimuovendo gli AZ dal campo. Sources Per impostazione predefinita, si rivolge ai pod all'interno di un cluster con etichette nel formato key=value. L'etichetta predefinita fornita è. CrossAZTraffic=PacketLossForEKS Puoi sostituire l'etichetta predefinita con una tua o aggiungere questa etichetta ai tuoi pod. Se non viene trovato alcun pod valido, questa azione verrà ignorata. Prima di eseguire un esperimento su EKS, è necessario seguire i passaggi di configurazione per le azioni dei pod EKS.

Perdita di pacchetti di rete EC2

Cross-AZ: Traffic Slowdown utilizza l'azione aws:ssm:send-command per eseguire il AWSFIS-Run-Network-Packet-Loss-Sources documento e causare la perdita di pacchetti per le istanze EC2 e compromettere la loro comunicazione in uscita con tutti gli altri AZ della regione. Puoi personalizzare ulteriormente l'ambito dell'impatto modificando l'azione e aggiungendo o rimuovendo gli AZ dal campo. Sources L'azione è indirizzata alle istanze nell'AZ selezionato. Per impostazione predefinita, si rivolge alle istanze con un tag denominato CrossAZTrafficSlowdown con un valore di. PacketLossForEC2 Puoi sostituire il tag predefinito con il tuo o aggiungere questo tag alle tue istanze. Se non viene trovata alcuna istanza valida, questa azione verrà ignorata. Prima di eseguire un esperimento su EC2 utilizzando SSM, è necessario configurare l'agente AWS Systems Manager.

Limitazioni

  • Questo scenario non include le condizioni di arresto. Le condizioni di arresto corrette per l'applicazione devono essere aggiunte al modello di esperimento.

Requisiti

  • Aggiungi le autorizzazioni richieste al ruolo dell'esperimento AWS FIS.

  • Devi scegliere come target una o più risorse da uno dei seguenti 3 tipi all'interno dell'AZ selezionato: istanze EC2, attività ECS o pod EKS.

  • Tutti i target dello scenario devono trovarsi nello stesso VPC.

Permissions

Per eseguire questo scenario è necessario un ruolo IAM con una policy di fiducia che consenta a FIS di assumere il ruolo e le politiche gestite per i tipi di risorse presi di mira nell'esperimento: EC2, ECS ed EKS. Quando crei un modello di esperimento dallo scenario Cross-AZ: Traffic Slowdown, FIS crea il ruolo per te con la policy di fiducia e le seguenti politiche gestite da AWS:

Se stai utilizzando un ruolo IAM esistente per eseguire lo scenario Cross-AZ: Traffic Slowdown, puoi allegare la seguente policy per concedere ad AWS FIS le autorizzazioni necessarie:

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

Contenuto dello scenario

Il seguente contenuto definisce lo scenario. Questo JSON può essere salvato e utilizzato per creare un modello di esperimento utilizzando il comando create-experiment-template dall'interfaccia a riga di comando di AWS (AWS CLI). Per la versione più recente dello scenario, visita la libreria degli scenari nella console FIS e vai alla scheda Contenuto.

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