View a markdown version of this page

Cross-AZ: Perlambatan Lalu Lintas - 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: Perlambatan Lalu Lintas

Anda dapat menggunakan Cross-AZ: Skenario Perlambatan Lalu Lintas untuk menyuntikkan kehilangan paket untuk mengganggu dan memperlambat lalu lintas antara Availability Zones (AZ). Kehilangan paket merusak komunikasi lintas AZ, gangguan parSIAL, kadang-kadang dikenal sebagai kegagalan abu-abu. Ini menyuntikkan kehilangan paket pada aliran jaringan antara sumber daya target. Aliran jaringan mewakili lalu lintas antara sumber daya komputasi - paket data yang membawa permintaan, respons, dan komunikasi lain antara server, kontainer, dan layanan Anda. Skenario ini dapat membantu memvalidasi pengaturan pengamatan, 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% kehilangan paket ke 100% aliran jaringan keluar untuk sumber daya target dari AZ yang dipilih selama durasi 30 menit. Anda dapat menggunakan dialog Edit parameter bersama di konsol AWS FIS untuk menyesuaikan parameter berikut di tingkat skenario, yang kemudian berlaku untuk tindakan yang mendasarinya:

  • Zona Ketersediaan - Anda dapat memilih AZ yang akan dirusak, dan kehilangan paket akan disuntikkan dari AZ tersebut ke AZ lain di 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 aliran - kurangi untuk mengganggu subset lalu lintas. Misalnya, Anda dapat menyuntikkan kehilangan paket 15% yang mempengaruhi 25% aliran jaringan untuk pengujian yang lebih halus.

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

  • Penargetan sumber daya - Anda dapat menentukan sumber daya target untuk skenario keseluruhan menggunakan tag (untuk instans EC2 atau tugas ECS di EC2 atau Fargate) atau label (untuk pod EKS di 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 sumber daya EC2 atau 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 cluster EKS untuk disediakan. Untuk penyesuaian yang lebih terperinci, Anda dapat memodifikasi tindakan individual dalam template percobaan secara langsung.

Tindakan

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

Kehilangan Paket Jaringan ECS

Cross-AZ: Perlambatan Lalu Lintas termasuk aws:ecs:task-network- packet-loss untuk menyuntikkan kehilangan paket untuk tugas ECS. Tindakan menargetkan tugas di AZ yang dipilih, dan merusak komunikasi keluar mereka ke semua AZ lain di Wilayah. Anda dapat menyesuaikan ruang lingkup dampak lebih lanjut dengan mengedit tindakan dan menambahkan atau menghapus AZ dari Sources lapangan. Secara default, ini menargetkan tugas CrossAZTrafficSlowdown dengan tag bernama dengan nilaiPacketLossForECS. Anda dapat mengganti tag default dengan tag Anda sendiri, atau menambahkan tag skenario ke tugas Anda. Jika tidak ada tugas yang valid ditemukan, 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 termasuk aws:eks:pod-network- packet-loss untuk menyuntikkan kehilangan paket untuk pod EKS. Tindakan menargetkan pod di AZ yang dipilih, dan merusak komunikasi outbound mereka ke semua AZ lain di wilayah tersebut. Anda dapat menyesuaikan ruang lingkup dampak lebih lanjut dengan mengedit tindakan dan menambahkan atau menghapus AZ dari Sources lapangan. Secara default, ini menargetkan pod dalam cluster 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 valid, tindakan ini akan dilewati. Sebelum menjalankan eksperimen di EKS, Anda harus mengikuti langkah-langkah pengaturan untuk tindakan pod EKS.

Kehilangan Paket Jaringan EC2

Cross-AZ: Perlambatan Lalu Lintas menggunakan tindakan aws:ssm:send-command untuk menjalankan AWSFIS-Run-Network-Packet-Loss-Sources dokumen guna menyuntikkan kehilangan paket untuk instans EC2, dan merusak komunikasi outbound mereka ke semua AZ lain di Wilayah. Anda dapat menyesuaikan ruang lingkup dampak lebih lanjut dengan mengedit tindakan dan menambahkan atau menghapus AZ dari Sources lapangan. Tindakan menargetkan instance di AZ yang dipilih. Secara default, ini menargetkan instance CrossAZTrafficSlowdown dengan tag bernama dengan nilaiPacketLossForEC2. Anda dapat mengganti tag default dengan tag Anda sendiri, atau menambahkan tag ini ke instance Anda. Jika tidak ada instans valid yang ditemukan, tindakan ini akan dilewati. Sebelum menjalankan percobaan pada 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: instans EC2, 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 mengambil peran dan kebijakan terkelola untuk jenis sumber daya yang Anda targetkan dalam percobaan: EC2, ECS, dan EKS. Saat Anda membuat template percobaan dari Cross-AZ: skenario 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: Perlambatan Lalu Lintas, Anda dapat melampirkan kebijakan berikut untuk memberikan izin yang diperlukan kepada AWS FIS:

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

Isi Skenario

Konten berikut mendefinisikan skenario. JSON ini dapat disimpan dan digunakan untuk membuat template percobaan menggunakan perintah create-experimentent-template dari AWS Command Line Interface (AWS CLI). Untuk versi terbaru skenario, 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" } ] }