Cross-AZ: Traffic Slowdown - AWS Layanan Injeksi Kesalahan

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Cross-AZ: Traffic Slowdown

Anda dapat menggunakan skenario Cross-AZ: Traffic Slowdown untuk menyuntikkan packet loss untuk mengganggu dan memperlambat lalu lintas antara Availability Zones (). AZs Kehilangan paket merusak komunikasi lintas-AZ, gangguan sebagian, kadang-kadang dikenal sebagai kegagalan abu-abu. Ini menyuntikkan packet loss pada arus jaringan antara sumber daya target. Aliran jaringan mewakili lalu lintas antara sumber daya komputasi — paket data yang membawa permintaan, tanggapan, dan komunikasi lainnya antara server, wadah, dan layanan Anda. Skenario ini dapat membantu memvalidasi pengaturan observabilitas, menyetel ambang alarm, menemukan sensitivitas dan dependensi aplikasi dalam komunikasi lintas-AZ, dan mempraktikkan keputusan operasional penting seperti evakuasi AZ.

Secara default, skenario menyuntikkan 15% packet loss ke 100% arus jaringan keluar untuk sumber daya target dari AZ yang dipilih selama 30 menit. Anda dapat menggunakan dialog Edit parameter bersama di konsol AWS FIS untuk menyesuaikan parameter berikut pada tingkat skenario, yang kemudian berlaku untuk tindakan yang mendasarinya:

  • Availability Zone - Anda dapat memilih AZ untuk merusak, dan paket loss akan disuntikkan dari AZ itu ke yang lain di AZs dalam Wilayah.

  • Packet Loss - sesuaikan kehilangan paket lebih rendah untuk pengujian gangguan halus, seperti 5%, atau lebih tinggi untuk menguji degradasi komunikasi yang parah dan mekanisme pemulihan, seperti 50%, atau bahkan 100% untuk dampak konektivitas total.

  • Persentase arus - kurangi untuk mengganggu subset lalu lintas. Misalnya, Anda dapat menyuntikkan 15% packet loss yang mempengaruhi 25% dari aliran jaringan untuk pengujian yang lebih halus.

  • Durasi - atur berapa lama percobaan berjalan. Anda dapat mempersingkat untuk tes yang lebih cepat, atau menjalankan tes berkelanjutan yang lebih lama. Misalnya, atur durasinya menjadi 2 jam untuk membantu menguji mekanisme pemulihan dalam kondisi yang terganggu.

  • Penargetan sumber daya - Anda dapat menentukan sumber daya target untuk skenario keseluruhan menggunakan tag (untuk EC2 instance atau tugas ECS pada atau EC2 Fargate) atau label (untuk pod EKS aktif). EC2 Anda dapat menentukan tag dan label Anda sendiri, atau menggunakan default yang disediakan dalam skenario. Jika Anda tidak ingin menggunakan tag atau label, Anda dapat mengedit tindakan untuk menargetkan sumber daya dengan menentukan parameter lain.

  • Kustomisasi - Jika Anda tidak ingin menargetkan EC2 atau sumber daya ECS, Anda dapat meninggalkan tindakan dengan tag default. Eksperimen tidak akan menemukan sumber daya apa pun untuk ditargetkan dan tindakan akan dilewati. Namun, jika Anda tidak ingin menargetkan sumber daya EKS, Anda harus menghapus tindakan dan target EKS dari skenario sepenuhnya, karena memerlukan pengenal kluster EKS untuk disediakan. Untuk kustomisasi yang lebih terperinci, Anda dapat memodifikasi tindakan individual dalam template eksperimen secara langsung.

Tindakan

Bersama-sama, tindakan berikut membantu menciptakan gejala perlambatan lalu lintas antara AZs dengan memperkenalkan packet loss pada komunikasi keluar dari target AZ ke yang lain AZs di wilayah pada lapisan jaringan. Tindakan ini berjalan secara paralel, masing-masing menyuntikkan 15% packet loss selama 30 menit secara default. Setelah periode ini, komunikasi kembali normal. Skenario membutuhkan setidaknya satu dari jenis sumber daya berikut di AZ yang dipilih untuk dijalankan: EC2 instance, tugas ECS, atau pod EKS.

Kehilangan Paket Jaringan ECS

Cross-AZ: Perlambatan Lalu Lintas mencakup aws:ecs: task-network-packet-loss untuk menyuntikkan kehilangan paket untuk tugas ECS. Tindakan tersebut menargetkan tugas-tugas di AZ yang dipilih, dan mengganggu komunikasi keluar mereka ke semua yang lain AZs di Wilayah. Anda dapat lebih lanjut menyesuaikan ruang lingkup dampak dengan mengedit tindakan dan menambahkan atau menghapus AZs dari Sources bidang. Secara default, ini menargetkan tugas dengan tag bernama CrossAZTrafficSlowdown dengan nilaiPacketLossForECS. Anda dapat mengganti tag default dengan tag Anda sendiri, atau menambahkan tag skenario ke tugas Anda. Jika tidak ditemukan tugas yang valid, tindakan ini akan dilewati. Sebelum menjalankan eksperimen di ECS, Anda harus mengikuti langkah-langkah pengaturan untuk tindakan tugas ECS.

Kehilangan Paket Jaringan EKS

Cross-AZ: Perlambatan Lalu Lintas mencakup aws:eks: pod-network-packet-loss untuk menyuntikkan kehilangan paket untuk pod EKS. Tindakan ini menargetkan pod di AZ yang dipilih, dan mengganggu komunikasi outbound mereka ke semua yang lain AZs di wilayah tersebut. Anda dapat lebih lanjut menyesuaikan ruang lingkup dampak dengan mengedit tindakan dan menambahkan atau menghapus AZs dari Sources bidang. Secara default, ia menargetkan pod dalam klaster yang memiliki label dengan format key=value. Label default yang disediakan adalahCrossAZTraffic=PacketLossForEKS. Anda dapat mengganti label default dengan label Anda sendiri, atau menambahkan label ini ke pod Anda. Jika tidak ditemukan pod yang valid, tindakan ini akan dilewati. Sebelum menjalankan eksperimen di EKS, Anda harus mengikuti langkah-langkah penyiapan untuk tindakan pod EKS.

EC2 Kehilangan Paket Jaringan

Cross-az: Traffic Slowdown menggunakan tindakan aws:ssm:send-command untuk menjalankan dokumen AWSFIS-Run-Network-Packet-Loss-Sources untuk menyuntikkan packet loss untuk instance, dan merusak komunikasi outbound mereka ke semua lainnya di Wilayah. EC2 AZs Anda dapat lebih lanjut menyesuaikan ruang lingkup dampak dengan mengedit tindakan dan menambahkan atau menghapus AZs dari Sources bidang. Tindakan menargetkan instance di AZ yang dipilih. Secara default, ini menargetkan instance dengan tag bernama CrossAZTrafficSlowdown dengan nilai. PacketLossForEC2 Anda dapat mengganti tag default dengan tag Anda sendiri, atau menambahkan tag ini ke instance Anda. Jika tidak ditemukan instance valid, tindakan ini akan dilewati. Sebelum menjalankan eksperimen EC2 menggunakan SSM, Anda harus mengonfigurasi agen AWS Systems Manager.

Batasan

  • Skenario ini tidak termasuk kondisi berhenti. Kondisi berhenti yang benar untuk aplikasi Anda harus ditambahkan ke template percobaan.

Persyaratan

  • Tambahkan izin yang diperlukan ke peran eksperimen AWS FIS.

  • Anda perlu menargetkan satu atau lebih sumber daya dari salah satu dari 3 jenis berikut dalam AZ yang dipilih: EC2 instance, tugas ECS, atau pod EKS.

  • Semua target skenario harus dalam VPC yang sama.

Izin

Untuk menjalankan skenario ini, Anda memerlukan peran IAM dengan kebijakan kepercayaan yang memungkinkan FIS untuk mengambil peran dan kebijakan terkelola untuk jenis sumber daya yang Anda targetkan dalam eksperimen: EC2, ECS, dan EKS. Saat Anda membuat template eksperimen dari skenario Cross-AZ: Perlambatan Lalu Lintas, FIS membuat peran untuk Anda dengan kebijakan kepercayaan dan kebijakan terkelola AWS berikut:

Jika Anda menggunakan peran IAM yang ada untuk menjalankan skenario Cross-AZ: Traffic Slowdown, Anda dapat melampirkan kebijakan berikut untuk memberikan AWS FIS izin yang diperlukan:

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

Skenario Konten

Konten berikut mendefinisikan skenario. JSON ini dapat disimpan dan digunakan untuk membuat template eksperimen menggunakan create-experiment-templateperintah dari AWS Command Line Interface (AWS CLI). Untuk versi skenario terbaru, kunjungi pustaka skenario di konsol FIS dan buka tab Konten.

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