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
DescribeServicesons memberikan wawasan tentang keadaan penerapan,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 mapan dan pemutus sirkuit dihidupkan, penerapan akan beralih keFAILEDstatus. Penerapan 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 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,
reasonbidang 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-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 khusus 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. 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
valuedengan 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
valuedengan 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
valuelangsung 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 (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 jumlah yang diinginkan 800 dan nilai 50 akan memiliki ambang 400.
Ada dua tahap untuk pemeriksaan status penerapan.
-
Pemutus sirkuit penerapan memantau tugas-tugas yang merupakan bagian dari penyebaran dan memeriksa tugas yang ada di
RUNNINGnegara bagian tersebut. Penjadwal mengabaikan kriteria kegagalan ketika tugas dalam penerapan saat ini berada dalamRUNNINGstatus dan melanjutkan ke tahap berikutnya. Ketika tugas gagal mencapaiRUNNINGstatus, pemutus sirkuit penerapan meningkatkan jumlah kegagalan satu. Ketika jumlah kegagalan sama dengan ambang batas, penerapan ditandai sebagaiFAILED. -
Tahap ini dimasukkan ketika ada satu atau lebih tugas di
RUNNINGnegara 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 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 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.