View a markdown version of this page

Cara pemutus sirkuit deployment Amazon ECS mendeteksi kegagalan - Amazon Elastic Container Service

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

Cara pemutus sirkuit deployment Amazon ECS mendeteksi kegagalan

Pemutus sirkuit penyebaran adalah mekanisme pembaruan bergulir yang menentukan apakah tugas mencapai keadaan tunak. Pemutus sirkuit penerapan memiliki opsi yang secara otomatis akan mengembalikan penerapan yang gagal ke penerapan yang ada dalam COMPLETED status. Anda dapat menyesuaikan cara pemutus sirkuit menghitung kegagalan dan ambang batas pemicunya, sehingga perilaku rollback sesuai dengan karakteristik startup aplikasi Anda dan toleransi Anda terhadap kegagalan tugas.

Saat penyebaran layanan mengubah status, Amazon ECS mengirimkan peristiwa perubahan status penerapan layanan ke EventBridge. Hal ini menyediakan cara terprogram untuk memantau status deployment layanan Anda. Untuk informasi selengkapnya, lihat Peristiwa perubahan status penyebaran layanan Amazon ECS. Sebaiknya buat dan memantau EventBridge aturan dengan eventName of SERVICE_DEPLOYMENT_FAILED sehingga Anda dapat mengambil tindakan manual untuk memulai penerapan Anda. Untuk informasi selengkapnya, lihat Mem ulai dengan EventBridge di Panduan EventBridge Pengguna Amazon.

Ketika pemutus sirkuit penerapan menentukan bahwa penerapan gagal, ia mencari penerapan terbaru yang berada dalam COMPLETED status. Ini adalah penerapan yang digunakannya sebagai roll-back deployment. Saat rollback dimulai, penerapan berubah dari a COMPLETED keIN_PROGRESS. Ini berarti bahwa penerapan tidak memenuhi syarat untuk rollback lain sampai mencapai COMPLETED status. Ketika pemutus sirkuit penerapan tidak menemukan penyebaran yang dalam COMPLETED keadaan tertentu, pemutus sirkuit tidak meluncurkan tugas baru dan penyebaran terhenti.

Saat Anda membuat layanan, penjadwal melacak tugas yang gagal diluncurkan dalam dua tahap.

  • Tahap 1 - Penjadwal memantau tugas untuk melihat apakah mereka bertransisi ke status RUNNING.

    • Sukses - Penerapan memiliki peluang transisi ke status SELESAI karena ada lebih dari satu tugas yang beralih ke status RUNNING. Kriteria kegagalan dilewati dan pemutus sirkuit bergerak ke tahap 2.

    • Kegagalan - Secara default, tugas berturut-turut yang tidak bertransisi ke status RUNNING dihitung terhadap ambang kegagalan (resetOnHealthyTaskistrue). resetOnHealthyTaskKapanfalse, semua kegagalan tugas menumpuk terlepas dari apakah tugas yang sehat dimulai di antara kegagalan.

  • Tahap 2 - Penerapan memasuki tahap ini ketika setidaknya ada satu tugas dalam status RUNNING. Pemutus sirkuit memeriksa pemeriksaan kesehatan untuk tugas-tugas dalam penerapan saat ini yang sedang dievaluasi. Pemeriksaan kesehatan yang divalidasi adalah Elastic Load Balancing, pemeriksaan kesehatan AWS Cloud Map layanan, dan pemeriksaan kesehatan kontainer.

    • Sukses - Setidaknya ada satu tugas dalam keadaan berjalan dengan pemeriksaan kesehatan yang telah lulus.

    • Kegagalan - Tugas yang diganti karena kegagalan pemeriksaan kesehatan telah mencapai ambang kegagalan.

Pertimbangkan hal berikut saat Anda menggunakan metode pemutus sirkuit penerapan pada layanan. EventBridge menghasilkan aturan.

  • Resp DescribeServices ons memberikan wawasan tentang keadaan penerapan, rolloutState danrolloutStateReason. Saat deployment baru dimulai, status peluncuran dimulai dalam status IN_PROGRESS. Saat layanan mencapai kondisi stabil, status peluncuran bertransisi ke COMPLETED. Jika layanan gagal mencapai kondisi mapan dan pemutus sirkuit dihidupkan, penerapan akan beralih ke FAILED status. Penerapan dalam FAILED status tidak meluncurkan tugas baru apa pun.

  • Selain peristiwa perubahan status penerapan layanan yang dikirim Amazon ECS untuk penerapan yang telah dimulai dan telah selesai, Amazon ECS juga mengirimkan peristiwa ketika penerapan dengan pemutus sirkuit dihidupkan gagal. Kejadian ini menyediakan detail tentang mengapa deployment gagal atau jika deployment dimulai karena rollback. Untuk informasi selengkapnya, lihat Peristiwa perubahan status penyebaran layanan Amazon ECS.

  • Jika penerapan baru dimulai karena penerapan sebelumnya gagal dan terjadi rollback, reason bidang peristiwa perubahan status penerapan layanan menunjukkan penerapan dimulai karena rollback.

  • Pemutus sirkuit penerapan hanya didukung untuk layanan Amazon ECS yang menggunakan pengontrol penyebaran rolling update (ECS).

  • Anda harus menggunakan konsol Amazon ECS, atau AWS CLI saat Anda menggunakan pemutus sirkuit penerapan dengan CloudWatch opsi tersebut. Untuk informasi selengkapnya, lihat Buat layanan menggunakan parameter yang ditentukan dan buat-layanan di Referensi AWS Command Line Interface .

create-service AWS CLI Contoh berikut menunjukkan cara membuat layanan Linux ketika pemutus sirkuit penerapan digunakan dengan opsi rollback.

aws ecs create-service \ --service-name MyService \ --deployment-controller type=ECS \ --desired-count 3 \ --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}" \ --task-definition sample-fargate:1 \ --launch-type FARGATE \ --platform-family LINUX \ --platform-version 1.4.0 \ --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"

create-service AWS CLI Contoh berikut menunjukkan cara membuat layanan dengan konfigurasi pemutus sirkuit penerapan khusus yang menggunakan jumlah kegagalan tetap 5 dan pelacakan kegagalan kumulatif.

aws ecs create-service \ --service-name MyService \ --deployment-controller type=ECS \ --desired-count 10 \ --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true,resetOnHealthyTask=false,thresholdConfiguration={type=COUNT,value=5}}" \ --task-definition sample-fargate:1 \ --launch-type FARGATE \ --platform-family LINUX \ --platform-version 1.4.0 \ --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"

Contoh:

Deployment 1 dalam COMPLETED keadaan.

Deployment 2 tidak dapat dimulai, sehingga pemutus sirkuit berputar kembali ke Deployment 1. Transisi Deployment 1 ke IN_PROGRESS negara bagian.

Deployment 3 dimulai dan tidak ada penerapan dalam COMPLETED status, jadi Deployment 3 tidak dapat memutar kembali, atau meluncurkan tugas.

Ambang batas kegagalan

Pemutus sirkuit penerapan menggunakan ambang kegagalan untuk menentukan kapan harus memindahkan penerapan ke suatu FAILED status. Anda dapat mengonfigurasi bagaimana kegagalan dihitung dan nilai ambang itu sendiri.

Mode penghitungan kegagalan

Peng resetOnHealthyTask aturan mengontrol bagaimana pemutus sirkuit menghitung kegagalan tugas selama penerapan.

true (default)

Jumlah kegagalan diatur ulang ke 0 setiap kali tugas mencapai keadaan sehat. Hanya kegagalan berturut-turut yang dihitung menuju ambang batas. Mode ini berguna untuk aplikasi yang mungkin mengalami kegagalan startup intermiten sebelum stabil.

false

Kegagalan tugas menumpuk selama penerapan. Jumlah kegagalan tidak pernah diatur ulang, bahkan ketika tugas yang sehat dimulai di antara kegagalan. Mode ini memberikan deteksi yang lebih cepat ketika pola kegagalan menunjukkan penerapan yang bermasalah.

Konfigurasi ambang batas

Peng thresholdConfiguration aturan menentukan kapan pemutus sirkuit terpicu. Ini berisi a type yang menentukan bagaimana ambang batas dihitung dan value yang menentukan persentase atau hitungan yang akan digunakan.

BOUNDED_PERCENT (default)

Amazon ECS dikalikan value dengan jumlah layanan terbaru yang diinginkan untuk menghitung ambang kegagalan. Hasilnya dijepit minimal 3 dan maksimum 200. Ini adalah tipe default dengan nilai default 50.

UNBOUNDED_PERCENT

Amazon ECS dikalikan value dengan jumlah layanan terbaru yang diinginkan untuk menghitung ambang kegagalan. Tidak ada batas minimum atau maksimum pada hasil. Gunakan jenis ini untuk layanan dengan jumlah besar yang diinginkan yang membutuhkan ambang proporsional tanpa batas 200.

COUNT

Amazon ECS menggunakan value langsung sebagai ambang kegagalan. Ambang batas tetap terlepas dari jumlah layanan yang diinginkan. Gunakan jenis ini jika Anda menginginkan jumlah pasti kegagalan yang ditoleransi, misalnya, ambang batas yang lebih rendah untuk pengembalian yang lebih cepat di lingkungan pengembangan.

Untuk jenis persentase (BOUNDED_PERCENTdanUNBOUNDED_PERCENT), rentang yang valid untuk value adalah 1—100. Selama penerapan, Amazon ECS terus menggunakan jumlah layanan terbaru yang diinginkan dalam perhitungannya.

Bagaimana BOUNDED_PERCENT menghitung ambang batas

Saat Anda menggunakan jenis BOUNDED_PERCENT ambang default, pemutus sirkuit penerapan menghitung ambang batas menggunakan rumus berikut.

Minimum threshold (3) <= (value/100) * desired task count => Maximum threshold (200)

Ketika hasil perhitungan kurang dari 3, ambang batas diatur ke 3. Ketika hasilnya lebih besar dari 200, ambang batas diatur ke 200. Jika tidak, ambang batas diatur ke nilai yang dihitung (dibulatkan ke atas).

Tabel berikut memberikan contoh menggunakan nilai default 50.

Jumlah tugas yang diinginkan Penghitungan Ambang batas

1

3 <= 0.5 * 1 => 200
3 (nilai yang dihitung kurang dari minimum)

25

3 <= 0.5 * 25 => 200
13 (nilainya dibulatkan ke atas)

400

3 <= 0.5 * 400 => 200
200 (nilai yang dihitung lebih besar dari maksimum)

800

3 <= 0.5 * 800 => 200
200 (nilai yang dihitung lebih besar dari maksimum)

DenganUNBOUNDED_PERCENT, perhitungan yang sama berlaku tetapi tanpa batas minimum dan maksimum. Misalnya, layanan dengan jumlah yang diinginkan 800 dan nilai 50 akan memiliki ambang 400.

Ada dua tahap untuk pemeriksaan status penerapan.

  1. Pemutus sirkuit penerapan memantau tugas-tugas yang merupakan bagian dari penyebaran dan memeriksa tugas yang ada di RUNNING negara bagian tersebut. Penjadwal mengabaikan kriteria kegagalan ketika tugas dalam penerapan saat ini berada dalam RUNNING status dan melanjutkan ke tahap berikutnya. Ketika tugas gagal mencapai RUNNING status, pemutus sirkuit penerapan meningkatkan jumlah kegagalan satu. Ketika jumlah kegagalan sama dengan ambang batas, penerapan ditandai sebagaiFAILED.

  2. Tahap ini dimasukkan ketika ada satu atau lebih tugas di RUNNING negara bagian. Pemutus sirkuit penerapan melakukan pemeriksaan kesehatan pada sumber daya berikut untuk tugas dalam penerapan saat ini:

    • Penyeimbang beban Penyeimbang Beban Elastis

    • AWS Cloud Map layanan

    • Pemeriksaan kesehatan wadah Amazon ECS

    Ketika pemeriksaan kesehatan gagal untuk tugas tersebut, pemutus sirkuit penerapan meningkatkan jumlah kegagalan satu. Ketika jumlah kegagalan sama dengan ambang batas, penerapan ditandai sebagaiFAILED.

Misalnya, ketika ambang batas adalah 3, pemutus sirkuit dimulai dengan jumlah kegagalan yang ditetapkan pada 0. Ketika tugas gagal mencapai RUNNING status, pemutus sirkuit penerapan meningkatkan jumlah kegagalan satu. Ketika jumlah kegagalan sama dengan 3, penerapan ditandai sebagaiFAILED.

Untuk contoh tambahan tentang cara menggunakan opsi rollback, lihat Mengumumkan pemutus sirkuit penerapan Amazon ECS.