Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Ketersediaan AZ: Gangguan Daya
Anda dapat menggunakan AZ Availability: Power Interruption skenario untuk menginduksi gejala yang diharapkan dari gangguan daya total di Availability Zone (AZ).
Skenario ini dapat digunakan untuk menunjukkan bahwa aplikasi Multi-AZ beroperasi seperti yang diharapkan selama gangguan daya AZ tunggal yang lengkap. Ini termasuk hilangnya komputasi zonal (Amazon EC2, EKS, dan ECS), tidak ada penskalaan ulang komputasi di AZ, kehilangan konektivitas subnet, failover RDS, failover, gangguan akses ke bucket direktori S3 Express One Zone, ElastiCache dan volume EBS yang tidak responsif. Secara default, tindakan yang tidak ditemukan targetnya akan dilewati.
Tindakan
Bersama-sama, tindakan berikut menciptakan banyak gejala yang diharapkan dari gangguan daya lengkap dalam satu AZ. Ketersediaan AZ: Gangguan Daya hanya memengaruhi layanan yang diharapkan akan melihat dampak selama gangguan daya AZ tunggal. Secara default, skenario menyuntikkan gejala gangguan daya selama 30 menit dan kemudian, selama 30 menit tambahan, menyuntikkan gejala yang mungkin terjadi selama pemulihan.
Stop-Instances
Selama gangguan daya AZ, instans EC2 di AZ yang terkena akan dimatikan. Setelah daya dipulihkan instans akan reboot. AZ Availability: Power Interruptionmenyertakan aws:ec2:stop-instance untuk menghentikan semua instance di AZ yang terpengaruh selama durasi interupsi. Setelah durasi, instance dimulai ulang. Menghentikan instans EC2 yang dikelola oleh Amazon EKS menyebabkan pod EKS dependen dihapus. Menghentikan instans EC2 yang dikelola oleh Amazon ECS menyebabkan tugas ECS dependen dihentikan.
Tindakan ini menargetkan instans EC2 yang berjalan di AZ yang terpengaruh. Secara default, ini menargetkan instance AzImpairmentPower dengan tag bernama dengan nilaiStopInstances. Anda dapat menambahkan tag ini ke instance Anda atau mengganti tag default dengan tag Anda sendiri di template percobaan. Secara default, jika tidak ada instans valid yang ditemukan, tindakan ini akan dilewati.
Stop-ASG-Instances
Selama gangguan daya AZ, instans EC2 yang dikelola oleh grup Penskalaan Otomatis di AZ yang terkena dampak akan dimatikan. Setelah daya dipulihkan instans akan reboot. AZ Availability: Power Interruptionmenyertakan aws:ec2:stop-instance untuk menghentikan semua instans, termasuk yang dikelola oleh Auto Scaling, di AZ yang terpengaruh selama durasi interupsi. Setelah durasi, instance dimulai ulang.
Tindakan ini menargetkan instans EC2 yang berjalan di AZ yang terpengaruh. Secara default, ini menargetkan instance AzImpairmentPower dengan tag bernama dengan nilaiIceAsg. Anda dapat menambahkan tag ini ke instance Anda atau mengganti tag default dengan tag Anda sendiri di template percobaan. Secara default, jika tidak ada instans valid yang ditemukan, tindakan ini akan dilewati.
Jeda Peluncuran Instans
Selama gangguan daya AZ, panggilan API EC2 ke kapasitas penyediaan di AZ akan gagal. Secara khusus, API berikut akan terpengaruh:ec2:StartInstances,ec2:CreateFleet, danec2:RunInstances. AZ Availability: Power Interruption includestermasuk aws:ec2:api-insuficient-instance-capacity-error untuk mencegah instans baru disediakan di AZ yang terpengaruh.
Tindakan ini menargetkan peran IAM yang digunakan untuk menyediakan instance. Ini harus ditargetkan menggunakan ARN. Secara default, jika tidak ada peran IAM yang valid ditemukan, tindakan ini akan dilewati.
Jeda Penskalaan ASG
Selama gangguan daya AZ, panggilan API EC2 yang dilakukan oleh bidang kontrol Auto Scaling untuk memulihkan kapasitas yang hilang di AZ akan gagal. Secara khusus, API berikut akan terpengaruh:ec2:StartInstances,ec2:CreateFleet, danec2:RunInstances. AZ Availability: Power Interruptiontermasuk aws:ec2:asg-insuficient-instance-capacity-error untuk mencegah instans baru disediakan di AZ yang terpengaruh. Ini juga mencegah Amazon EKS dan Amazon ECS dari penskalaan di AZ yang terkena dampak.
Tindakan ini menargetkan grup Penskalaan Otomatis. Secara default, ini menargetkan grup Auto Scaling AzImpairmentPower dengan tag bernama dengan nilaiIceAsg. Anda dapat menambahkan tag ini ke grup Auto Scaling atau mengganti tag default dengan tag Anda sendiri di template percobaan. Secara default, jika tidak ditemukan grup Penskalaan Otomatis yang valid, tindakan ini akan dilewati.
Jeda Konektivitas Jaringan
Selama gangguan daya AZ, jaringan di AZ tidak akan tersedia. Ketika ini terjadi, beberapa layanan AWS mungkin memerlukan waktu hingga beberapa menit untuk memperbarui DNS agar mencerminkan bahwa titik akhir pribadi di AZ yang terpengaruh tidak tersedia. Selama waktu ini, pencarian DNS dapat mengembalikan alamat IP yang tidak dapat diakses. AZ Availability: Power Interruptiontermasuk aws:network:disrupt-connection untuk memblokir semua konektivitas jaringan untuk semua subnet di AZ yang terpengaruh selama 2 menit. Ini akan memaksa batas waktu dan penyegaran DNS untuk sebagian besar aplikasi. Mengakhiri tindakan setelah 2 menit memungkinkan pemulihan DNS layanan regional berikutnya sementara AZ terus tidak tersedia.
Tindakan ini menargetkan subnet. Secara default, ini menargetkan cluster AzImpairmentPower dengan tag bernama dengan nilaiDisruptSubnet. Anda dapat menambahkan tag ini ke subnet Anda atau mengganti tag default dengan tag Anda sendiri di template percobaan. Secara default, jika tidak ada subnet yang valid ditemukan tindakan ini akan dilewati.
Failover RDS
Selama gangguan daya AZ, node RDS di AZ yang terkena akan mati. Node AZ RDS tunggal di AZ yang terkena akan sepenuhnya tidak tersedia. Untuk cluster multi-AZ, node penulis akan failover ke AZ yang tidak terpengaruh dan node pembaca di AZ yang terpengaruh tidak akan tersedia. Untuk cluster multi-AZ, ser AZ Availability: Power Interruption takan aws:rds:failover-db-cluster ke failover jika penulis berada di AZ yang terpengaruh.
Tindakan ini menargetkan cluster RDS. Secara default, ini menargetkan cluster AzImpairmentPower dengan tag bernama dengan nilaiDisruptRds. Anda dapat menambahkan tag ini ke cluster Anda atau mengganti tag default dengan tag Anda sendiri di template percobaan. Secara default, jika tidak ada cluster yang valid ditemukan tindakan ini akan dilewati.
Jeda Grup ElastiCache Replikasi
Selama gangguan daya AZ, ElastiCache node di AZ tidak tersedia. AZ Availability: Power Interruptiontermasuk aws:elasticache:replicationgroup -interrupt-az-power untuk mengakhiri node di AZ yang terpengaruh. ElastiCache Selama interupsi, instans baru tidak akan disediakan di AZ yang terpengaruh, sehingga grup replikasi akan tetap pada kapasitas yang berkurang.
Tindakan ini menarget ElastiCache kan grup replikasi. Secara default, ini menargetkan grup replikasi AzImpairmentPower dengan tag bernama dengan nilaiElasticacheImpact. Anda dapat menambahkan tag ini ke grup replikasi atau mengganti tag default dengan tag Anda sendiri di template percobaan. Secara default, jika tidak ditemukan grup replikasi yang valid, tindakan ini akan dilewati. Perhatikan bahwa hanya grup replikasi dengan node di AZ yang terpengaruh yang akan dianggap target yang valid.
Mulai ARC Zonal Autoshift
Lima menit setelah gangguan daya AZ dimulai, tindakan pemulihan secara aws:arc:start-zonal-autoshift otomatis mengalihkan lalu lintas sumber daya dari AZ yang ditentukan selama sisa 25 menit dari gangguan daya. Setelah durasi itu, lalu lintas bergeser kembali ke AZ asli. Perhatikan bahwa selama gangguan daya AZ dunia nyata AWS akan mendeteksi gangguan dan mengalihkan lalu lintas sumber daya jika autoshift diaktifkan. Sementara waktu pergeseran ini bervariasi, diperkirakan terjadi lima menit dari gangguan dimulai.
Tindakan ini menargetkan sumber daya yang mendukung penyaluran otomatis Amazon Application Recovery Controller (ARC). Secara default, ini menargetkan sumber daya dengan kunci tag AzImpairmentPower dan nilaiRecoverAutoshiftResources. Anda dapat menambahkan tag ini ke sumber daya Anda atau mengganti tag default dengan tag Anda sendiri di template percobaan. Misalnya, Anda mungkin ingin menggunakan tag khusus aplikasi. Secara default, jika tidak ada sumber daya yang valid ditemukan, tindakan ini akan dilewati.
Jeda EBS I/O
Setelah gangguan daya AZ, setelah daya dipulihkan, persentase instans yang sangat kecil mungkin mengalami volume EBS yang tidak responsif. AZ Availability: Power Interruptiontermasuk aws:ebs:pause-io untuk meninggalkan 1 volume EBS dalam keadaan tidak responsif.
Secara default, hanya volume yang disetel untuk bertahan setelah instance dihentikan yang ditargetkan. Tindakan ini menargetkan volume AzImpairmentPower dengan tag bernama dengan nilaiAPIPauseVolume. Anda dapat menambahkan tag ini ke volume Anda atau mengganti tag default dengan tag Anda sendiri di template percobaan. Secara default, jika tidak ada volume yang valid ditemukan, tindakan ini akan dilewati.
Mengganggu konektivitas ke bucket direktori S3 Express One Zone
Selama gangguan daya AZ, data yang disimpan dalam bucket direktori S3 Express One Zone di AZ tidak dapat diakses. Ketersediaan AZ: Gangguan Daya menyer takan aws:network:disrupt-connection untuk mengganggu konektivitas antara subnet dan bucket direktori One Zone di AZ yang terpengaruh selama percobaan, menghasilkan batas waktu untuk operasi API bidang data titik akhir Zonal. Gunakan tindakan ini untuk menguji gangguan saat komputasi ditempatkan bersama dengan penyimpanan di AZ.
Tindakan ini menargetkan subnet. Secara default, ini menargetkan subnet dengan tag bernama AzImpairmentPower dengan nilaiDisruptSubnet. Anda dapat menambahkan tag ini ke subnet Anda atau mengganti tag default dengan tag Anda sendiri di template percobaan. Secara default, jika tidak ada subnet yang valid ditemukan tindakan ini akan dilewati.
Batasan
-
Skenario ini tidak termasuk kondisi berhenti. Kondisi berhenti yang benar untuk aplikasi Anda harus ditambahkan ke template percobaan.
-
Di AZ yang ditargetkan, Amazon EKS Pod yang berjalan di EC2 akan dihentikan dengan node pekerja EC2 dan awal node EC2 baru akan diblokir. Namun, Amazon EKS Pod yang berjalan di AWS Fargate tidak didukung.
-
Di AZ yang ditargetkan, tugas Amazon ECS yang berjalan di EC2 akan dihentikan dengan node pekerja EC2 dan awal node EC2 baru akan diblokir. Namun, tugas Amazon ECS yang berjalan di AWS Fargate tidak didukung.
-
Amazon RDS Multi-AZ dengan dua instans DB siaga yang dapat dibaca tidak didukung. Dalam hal ini, instans akan dihentikan, RDS akan failover, dan kapasitas akan segera disediakan kembali di AZ yang terpengaruh. Siaga yang dapat dibaca di AZ yang terkena akan tetap tersedia.
Persyaratan
-
Tambahkan izin yang diperlukan ke peran AWS FIS eksperimen.
-
Tag sumber daya harus diterapkan ke sumber daya yang akan ditargetkan oleh eksperimen. Ini dapat menggunakan konvensi penandaan Anda sendiri atau tag default yang ditentukan dalam skenario.
Perizinan
ARC zonal autoshift menggunakan peran terkait layanan IAM AWSServiceRoleForZonalAutoshiftPracticeRun untuk melakukan pergeseran zona atas nama Anda. Peran ini menggunakan kebijakan AWSZonalAutoshiftPracticeRunSLRPolicy yang dikelola IAM. Anda tidak perlu membuat peran secara manual. Saat Anda membuat template eksperimen dari skenario AZ Power Interruption di Konsol Manajemen AWS, AWS CLI, atau AWS SDK, ARC membuat peran terkait layanan untuk Anda. Untuk informasi selengkapnya, lihat Menggunakan peran terkait layanan untuk autoshift zonal di ARC.
Kebijakan berikut memberi AWS FIS izin yang diperlukan untuk menjalankan eksperimen dengan AZ Availability: Power Interruption skenario. Kebijakan ini harus dilampirkan pada peran eksperimen.
Isi Skenario
Konten berikut mendefinisikan skenario. JSON ini dapat disimpan dan digunakan untuk membuat template percobaan menggunakan perintah create-experimentent-template dari AWS
{ "targets": { "IAM-role": { "resourceType": "aws:iam:role", "resourceArns": [], "selectionMode": "ALL" }, "EBS-Volumes": { "resourceType": "aws:ec2:ebs-volume", "resourceTags": { "AzImpairmentPower": "ApiPauseVolume" }, "selectionMode": "COUNT(1)", "parameters": { "availabilityZoneIdentifier": "us-east-1a" }, "filters": [ { "path": "Attachments.DeleteOnTermination", "values": [ "false" ] } ] }, "EC2-Instances": { "resourceType": "aws:ec2:instance", "resourceTags": { "AzImpairmentPower": "StopInstances" }, "filters": [ { "path": "State.Name", "values": [ "running" ] }, { "path": "Placement.AvailabilityZone", "values": [ "us-east-1a" ] } ], "selectionMode": "ALL" }, "ASG": { "resourceType": "aws:ec2:autoscaling-group", "resourceTags": { "AzImpairmentPower": "IceAsg" }, "selectionMode": "ALL" }, "ASG-EC2-Instances": { "resourceType": "aws:ec2:instance", "resourceTags": { "AzImpairmentPower": "IceAsg" }, "filters": [ { "path": "State.Name", "values": [ "running" ] }, { "path": "Placement.AvailabilityZone", "values": [ "us-east-1a" ] } ], "selectionMode": "ALL" }, "Subnet": { "resourceType": "aws:ec2:subnet", "resourceTags": { "AzImpairmentPower": "DisruptSubnet" }, "filters": [ { "path": "AvailabilityZone", "values": [ "us-east-1a" ] } ], "selectionMode": "ALL", "parameters": {} }, "RDS-Cluster": { "resourceType": "aws:rds:cluster", "resourceTags": { "AzImpairmentPower": "DisruptRds" }, "selectionMode": "ALL", "parameters": { "writerAvailabilityZoneIdentifiers": "us-east-1a" } }, "ElastiCache-Cluster": { "resourceType": "aws:elasticache:replicationgroup", "resourceTags": { "AzImpairmentPower": "DisruptElasticache" }, "selectionMode": "ALL", "parameters": { "availabilityZoneIdentifier": "us-east-1a" } } }, "actions": { "Pause-Instance-Launches": { "actionId": "aws:ec2:api-insufficient-instance-capacity-error", "parameters": { "availabilityZoneIdentifiers": "us-east-1a", "duration": "PT30M", "percentage": "100" }, "targets": { "Roles": "IAM-role" } }, "Pause-EBS-IO": { "actionId": "aws:ebs:pause-volume-io", "parameters": { "duration": "PT30M" }, "targets": { "Volumes": "EBS-Volumes" }, "startAfter": [ "Stop-Instances", "Stop-ASG-Instances" ] }, "Stop-Instances": { "actionId": "aws:ec2:stop-instances", "parameters": { "completeIfInstancesTerminated": "true", "startInstancesAfterDuration": "PT30M" }, "targets": { "Instances": "EC2-Instances" } }, "Pause-ASG-Scaling": { "actionId": "aws:ec2:asg-insufficient-instance-capacity-error", "parameters": { "availabilityZoneIdentifiers": "us-east-1a", "duration": "PT30M", "percentage": "100" }, "targets": { "AutoScalingGroups": "ASG" } }, "Stop-ASG-Instances": { "actionId": "aws:ec2:stop-instances", "parameters": { "completeIfInstancesTerminated": "true", "startInstancesAfterDuration": "PT30M" }, "targets": { "Instances": "ASG-EC2-Instances" } }, "Pause-network-connectivity": { "actionId": "aws:network:disrupt-connectivity", "parameters": { "duration": "PT2M", "scope": "all" }, "targets": { "Subnets": "Subnet" } }, "Failover-RDS": { "actionId": "aws:rds:failover-db-cluster", "parameters": {}, "targets": { "Clusters": "RDS-Cluster" } }, "Pause-ElastiCache": { "actionId": "aws:elasticache:replicationgroup-interrupt-az-power", "parameters": { "duration": "PT30M" }, "targets": { "ReplicationGroups": "ElastiCache-Cluster" } } }, "stopConditions": [ { "source": "aws:cloudwatch:alarm", "value": "" } ], "roleArn": "", "tags": { "Name": "AZ Impairment: Power Interruption" }, "logConfiguration": { "logSchemaVersion": 2 }, "experimentOptions": { "accountTargeting": "single-account", "emptyTargetResolutionMode": "skip" }, "description": "Affect multiple resource types in a single AZ, targeting by tags and explicit ARNs, to approximate power interruption in one AZ." }