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 kondisi mapan. Pemutus sirkuit penyebaran memiliki opsi yang secara otomatis akan mengembalikan penerapan yang gagal ke penerapan yang ada dalam status. COMPLETED 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 penerapan 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 Acara perubahan status penerapan layanan Amazon ECS. Kami menyarankan Anda membuat dan memantau EventBridge aturan dengan angka eventName SERVICE_DEPLOYMENT_FAILED sehingga Anda dapat mengambil tindakan manual untuk memulai penerapan Anda. Untuk informasi selengkapnya, lihat Memulai EventBridge di Panduan EventBridge Pengguna Amazon.
Ketika pemutus sirkuit penyebaran menentukan bahwa penerapan gagal, ia mencari penerapan terbaru yang berada dalam keadaan. COMPLETED Ini adalah penerapan yang digunakannya sebagai penerapan roll-back. Saat rollback dimulai, penerapan berubah dari a ke. COMPLETED IN_PROGRESS Ini berarti bahwa penerapan tidak memenuhi syarat untuk rollback lain hingga mencapai status. COMPLETED Ketika pemutus sirkuit penyebaran tidak menemukan penyebaran yang dalam COMPLETED keadaan, 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 untuk beralih ke status SELESAI karena ada lebih dari satu tugas yang dialihkan 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 menuju 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 penyebaran saat ini yang sedang dievaluasi. Pemeriksaan kesehatan yang divalidasi adalah Elastic Load Balancing AWS Cloud Map , pemeriksaan kesehatan pelayanan, dan pemeriksaan kesehatan kontainer.
-
Sukses - Setidaknya ada satu tugas dalam keadaan berjalan dengan pemeriksaan kesehatan yang telah berlalu.
-
Kegagalan - Tugas yang diganti karena kegagalan pemeriksaan kesehatan telah mencapai ambang kegagalan.
-
Pertimbangkan hal berikut ketika Anda menggunakan metode deployment circuit breaker pada suatu layanan. EventBridge menghasilkan aturan.
-
DescribeServicesRespons memberikan wawasan tentang keadaan penyebaran,rolloutStatedanrolloutStateReason. Saat deployment baru dimulai, status peluncuran dimulai dalam statusIN_PROGRESS. Saat layanan mencapai kondisi stabil, status peluncuran bertransisi keCOMPLETED. Jika layanan gagal mencapai kondisi tunak dan pemutus sirkuit dihidupkan, penyebaran akan beralih ke keadaan.FAILEDPenerapan dalamFAILEDstatus 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 diaktifkan gagal. Kejadian ini menyediakan detail tentang mengapa deployment gagal atau jika deployment dimulai karena rollback. Untuk informasi selengkapnya, lihat Acara perubahan status penerapan layanan Amazon ECS.
-
Jika penerapan baru dimulai karena penerapan sebelumnya gagal dan terjadi rollback,
reasonbidang peristiwa perubahan status penerapan layanan menunjukkan penerapan dimulai karena rollback. -
Pemutus sirkuit penyebaran hanya didukung untuk layanan Amazon ECS yang menggunakan pengontrol penyebaran pembaruan bergulir (
ECS). -
Anda harus menggunakan konsol Amazon ECS, atau AWS CLI ketika Anda menggunakan pemutus sirkuit penyebaran dengan opsi. CloudWatch 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 deployment digunakan dengan opsi rollback.
aws ecs create-service \ --service-nameMyService\ --deployment-controller type=ECS\ --desired-count3\ --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}" \ --task-definitionsample-fargate:1\ --launch-typeFARGATE\ --platform-familyLINUX\ --platform-version1.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 kustom yang menggunakan jumlah kegagalan tetap 5 dan pelacakan kegagalan kumulatif.
aws ecs create-service \ --service-nameMyService\ --deployment-controller type=ECS\ --desired-count10\ --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true,resetOnHealthyTask=false,thresholdConfiguration={type=COUNT,value=5}}" \ --task-definitionsample-fargate:1\ --launch-typeFARGATE\ --platform-familyLINUX\ --platform-version1.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. Penerapan 1 transisi ke negara bagian. IN_PROGRESS
Deployment 3 dimulai dan tidak ada penerapan di COMPLETED status, jadi Deployment 3 tidak dapat memutar kembali, atau meluncurkan tugas.
Ambang batas kegagalan
Pemutus sirkuit penyebaran menggunakan ambang kegagalan untuk menentukan kapan harus memindahkan penyebaran ke suatu keadaan. FAILED Anda dapat mengonfigurasi bagaimana kegagalan dihitung dan nilai ambang itu sendiri.
Mode penghitungan kegagalan
resetOnHealthyTaskPengaturan mengontrol bagaimana pemutus sirkuit menghitung kegagalan tugas selama penerapan.
true(default)-
Hitungan 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 menstabilkan.
false-
Kegagalan tugas menumpuk di seluruh penerapan. Jumlah kegagalan tidak pernah diatur ulang, bahkan ketika tugas yang sehat dimulai di antara kegagalan. Mode ini memberikan deteksi lebih cepat ketika pola kegagalan menunjukkan penerapan yang bermasalah.
Konfigurasi ambang batas
thresholdConfigurationPengaturan menentukan kapan pemutus sirkuit terpicu. Ini berisi type yang menentukan bagaimana ambang dihitung dan value yang menentukan persentase atau hitungan yang akan digunakan.
BOUNDED_PERCENT(default)-
Amazon ECS dikalikan
valuedengan jumlah layanan terbaru yang diinginkan untuk menghitung ambang kegagalan. Hasilnya dijepit minimal 3 dan maksimal 200. Ini adalah tipe default dengan nilai default 50. UNBOUNDED_PERCENT-
Amazon ECS dikalikan
valuedengan jumlah layanan terbaru yang diinginkan untuk menghitung ambang kegagalan. Tidak ada batas minimum atau maksimum pada hasilnya. Gunakan jenis ini untuk layanan dengan jumlah besar yang diinginkan yang membutuhkan ambang proporsional tanpa batas 200. COUNT-
Amazon ECS menggunakan
valuelangsung sebagai ambang kegagalan. Ambang batas tetap terlepas dari jumlah layanan yang diinginkan. Gunakan jenis ini ketika Anda menginginkan jumlah pasti kegagalan yang ditoleransi, misalnya, ambang batas yang lebih rendah untuk kemunduran yang lebih cepat di lingkungan pengembangan.
Untuk jenis persentase (BOUNDED_PERCENTdanUNBOUNDED_PERCENT), kisaran yang valid untuk value adalah 1-100. Selama penyebaran, Amazon ECS terus menggunakan jumlah layanan terbaru yang diinginkan dalam perhitungannya.
Bagaimana BOUNDED_PERCENT menghitung ambang batas
Saat Anda menggunakan tipe BOUNDED_PERCENT ambang batas default, pemutus sirkuit penyebaran 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.
| Hitungan tugas yang diinginkan | Penghitungan | Ambang batas |
|---|---|---|
|
1 |
|
3 (nilai yang dihitung kurang dari minimum) |
|
25 |
|
13 (nilainya dibulatkan ke atas) |
|
400 |
|
200 (nilai yang dihitung lebih besar dari maksimum) |
|
800 |
|
200 (nilai yang dihitung lebih besar dari maksimum) |
DenganUNBOUNDED_PERCENT, perhitungan yang sama berlaku tetapi tanpa batas minimum dan maksimum. Misalnya, layanan dengan hitungan 800 yang diinginkan dan nilai 50 akan memiliki ambang batas 400.
Ada dua tahap untuk pemeriksaan status penerapan.
-
Pemutus sirkuit penyebaran memantau tugas-tugas yang merupakan bagian dari penyebaran dan memeriksa tugas-tugas yang ada di negara bagian.
RUNNINGPenjadwal mengabaikan kriteria kegagalan ketika tugas dalam penerapan saat ini dalamRUNNINGstatus dan melanjutkan ke tahap berikutnya. Ketika tugas gagal mencapaiRUNNINGstatus, pemutus sirkuit penyebaran meningkatkan jumlah kegagalan satu per satu. Ketika jumlah kegagalan sama dengan ambang batas, penerapan ditandai sebagai.FAILED -
Tahap ini dimasukkan ketika ada satu atau lebih tugas di
RUNNINGnegara bagian. Pemutus sirkuit penyebaran melakukan pemeriksaan kesehatan pada sumber daya berikut untuk tugas-tugas dalam penyebaran saat ini:-
Penyeimbang beban Elastic Load Balancing
-
AWS Cloud Map layanan
-
Pemeriksaan kesehatan kontainer Amazon ECS
Ketika pemeriksaan kesehatan gagal untuk tugas tersebut, pemutus sirkuit penyebaran meningkatkan jumlah kegagalan satu per satu. Ketika jumlah kegagalan sama dengan ambang batas, penerapan ditandai sebagai.
FAILED -
Misalnya, ketika ambang batas adalah 3, pemutus sirkuit dimulai dengan jumlah kegagalan yang ditetapkan pada 0. Ketika tugas gagal mencapai RUNNING status, pemutus sirkuit penyebaran meningkatkan jumlah kegagalan satu per satu. Ketika jumlah kegagalan sama dengan 3, penerapan ditandai sebagai. FAILED
Untuk contoh tambahan tentang cara menggunakan opsi rollback, lihat Mengumumkan pemutus sirkuit penyebaran Amazon ECS.