Bagaimana pemutus sirkuit penyebaran 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.

Bagaimana pemutus sirkuit penyebaran 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

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 Membuat EventBridge Aturan 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 - Ada tugas berturut-turut yang tidak bertransisi ke status RUNNING dan penerapan mungkin bertransisi ke status GAGAL.

  • 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 layanan. EventBridgemenghasilkan aturan.

  • DescribeServicesRespons memberikan wawasan tentang keadaan penyebaran, 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 tunak dan pemutus sirkuit dihidupkan, penyebaran akan beralih ke keadaan. FAILED 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 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, reason bidang 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-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}"

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 menghitung nilai ambang batas, dan kemudian menggunakan nilai untuk menentukan kapan harus memindahkan penyebaran ke status. FAILED

Pemutus sirkuit penyebaran memiliki ambang minimum 3 dan ambang maksimum 200. dan menggunakan nilai-nilai dalam rumus berikut untuk menentukan kegagalan penerapan.

Minimum threshold <= 0.5 * desired task count => maximum threshold

Ketika hasil perhitungan lebih besar dari minimum 3, tetapi lebih kecil dari maksimum 200, ambang kegagalan diatur ke ambang batas yang dihitung (dibulatkan ke atas).

catatan

Anda tidak dapat mengubah salah satu nilai ambang batas.

Ada dua tahap untuk pemeriksaan status penerapan.

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

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

    • Penyeimbang beban Elastic Load Balancing

    • AWS Cloud Map layanan

    • Pemeriksaan kesehatan wadah 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

Tabel berikut menunjukkan beberapa contoh.

Hitungan tugas yang diinginkan Penghitungan Ambang

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

800

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

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.