AZ: Application 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.

AZ: Application Slowdown

Anda dapat menggunakan skenario AZ: Perlambatan Aplikasi untuk memperkenalkan latensi tambahan antar sumber daya dalam satu Availability Zone (AZ). Latensi ini menciptakan banyak gejala perlambatan aplikasi, gangguan sebagian, kadang-kadang dikenal sebagai kegagalan abu-abu. Ini menambahkan latensi ke 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 aplikasi terhadap perlambatan, dan mempraktikkan keputusan operasional penting seperti evakuasi AZ.

Secara default, skenario menambahkan latensi 200 md ke 100% aliran jaringan antara sumber daya target dalam 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 skenario.

  • Millidetik (ms) latensi - sesuaikan ini berdasarkan sensitivitas dan kebutuhan aplikasi Anda. Anda dapat mengatur latensi lebih rendah untuk aplikasi yang lebih sensitif atau lebih tinggi untuk menguji penanganan batas waktu, misalnya. Pertimbangkan untuk menggunakan kelipatan latensi aplikasi Anda saat ini sebagai dasar.

  • Persentase arus - kurangi untuk mengganggu subset lalu lintas. Misalnya, Anda dapat menambahkan latensi 200 ms yang memengaruhi 25% 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 menguji mekanisme pemulihan Anda 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 banyak gejala perlambatan aplikasi dalam satu AZ dengan memperkenalkan latensi tambahan pada aliran jaringan, yang kemudian menyebar melalui aplikasi. Tindakan ini berjalan secara paralel, masing-masing menambahkan latensi 200ms selama 30 menit secara default. Setelah periode ini, latensi kembali ke level normal. Skenario ini membutuhkan setidaknya satu dari jenis sumber daya berikut untuk dijalankan: EC2 instance, tugas ECS, atau pod EKS.

Latensi Jaringan ECS

AZ: Perlambatan Aplikasi mencakup aws:ecs: task-network-latency untuk memperkenalkan latensi untuk tugas ECS. Tindakan menargetkan tugas di AZ yang dipilih. Secara default, ini menargetkan tugas dengan tag bernama AZApplicationSlowdown dengan nilaiLatencyForECS. 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.

Latensi Jaringan EKS

AZ: Perlambatan Aplikasi mencakup aws:eks: pod-network-latency untuk memperkenalkan latensi untuk pod EKS. Tindakan menargetkan pod di AZ yang dipilih. Secara default, ia menargetkan pod dalam klaster yang memiliki label dengan format key=value. Label default yang disediakan adalahAZApplicationSlowdown=LatencyForEKS. 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 Latensi Jaringan

AZ: Perlambatan Aplikasi menggunakan tindakan aws:ssm:send-command untuk menjalankan dokumen -Network-Latency-Sources untuk memperkenalkan latensi untuk instance. AWSFIS-Run EC2 Tindakan menargetkan instance di AZ yang dipilih. Secara default, ini menargetkan instance dengan tag bernama AZApplicationSlowdown dengan nilai. LatencyForEC2 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 AZ: Perlambatan Aplikasi, FIS membuat peran untuk Anda dengan kebijakan kepercayaan dan kebijakan terkelola AWS berikut:

Jika Anda menggunakan peran IAM yang ada untuk menjalankan skenario AZ: Perlambatan Aplikasi, 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": "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" } ] }