View a markdown version of this page

Lindungi tugas Amazon ECS Anda agar tidak dihentikan oleh peristiwa scale-in - Amazon Elastic Container Service

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

Lindungi tugas Amazon ECS Anda agar tidak dihentikan oleh peristiwa scale-in

Anda dapat menggunakan perlindungan penskalaan tugas Amazon ECS untuk melindungi tugas Anda agar tidak dihentikan oleh peristiwa penskalaan masuk dari penskalaan otomatis layanan atau penerapan.

Aplikasi tertentu memerlukan mekanisme untuk melindungi tugas penting dari penghentian oleh peristiwa penskalaan selama masa pemanfaatan rendah atau selama penerapan layanan. Contoh:

  • Anda memiliki aplikasi asinkron pemrosesan antrian seperti pekerjaan transcoding video di mana beberapa tugas perlu dijalankan selama berjam-jam bahkan ketika pemanfaatan layanan kumulatif rendah.

  • Anda memiliki aplikasi game yang menjalankan server game sebagai tugas Amazon ECS yang perlu terus berjalan meskipun semua pengguna telah keluar untuk mengurangi latensi awal reboot server.

  • Saat Anda menerapkan versi kode baru, Anda memerlukan tugas untuk terus berjalan karena akan mahal untuk diproses ulang.

Untuk melindungi tugas milik layanan Anda agar tidak berakhir dalam peristiwa scale-in, setel atribut keProtectionEnabled. true Saat Anda meny ProtectionEnabled etel ke true, tugas dilindungi selama 2 jam secara default. Anda kemudian dapat menyesuaikan periode perlindungan dengan menggunakan ExpiresInMinutes atribut. Anda dapat melindungi tugas Anda selama minimal 1 menit dan maksimal 2880 menit (48 jam). Jika Anda menggunakan AWS CLI, Anda dapat menentukan --protection-enabled opsi.

Setelah tugas menyelesaikan pekerjaan yang diperlukan, Anda dapat mengatur ProtectionEnabled atribut kefalse, memungkinkan tugas dihentikan oleh peristiwa scale-in berikutnya. Jika Anda menggunakan AWS CLI, Anda dapat menentukan --no-protection-enabled opsi.

Mekanisme perlindungan skala tugas

Anda dapat mengatur dan mendapatkan perlindungan penskalaan tugas menggunakan titik akhir agen kontainer Amazon ECS atau API Amazon ECS.

  • Titik akhir agen kontainer Amazon ECS

    Sebaiknya gunakan titik akhir agen kontainer Amazon ECS untuk tugas-tugas yang dapat menentukan sendiri kebutuhan untuk dilindungi. Gunakan pendekatan ini untuk beban kerja berbasis antrian atau pemrosesan pekerjaan.

    Saat wadah mulai memproses pekerjaan, misalnya dengan menggunakan pesan SQS, Anda dapat mengatur ProtectionEnabled atribut melalui jalur titik akhir perlindungan skala tugas $ECS_AGENT_URI/task-protection/v1/state dari dalam wadah. Amazon ECS tidak akan menghentikan tugas ini selama acara scale-in. Setelah tugas menyelesaikan pekerjaannya, Anda dapat menghapus ProtectionEnabled atribut menggunakan titik akhir yang sama, membuat tugas memenuhi syarat untuk dihentikan selama peristiwa scale-in berikutnya.

    Untuk informasi selengkapnya tentang titik akhir agen kontainer Amazon ECS, lihatTitik akhir perlindungan penskalaan tugas Amazon ECS.

  • API Amazon ECS

    Anda dapat menggunakan Amazon ECS API untuk mengatur dan mengambil perlindungan penskalaan tugas jika aplikasi Anda memiliki komponen yang melacak status tugas aktif. Gunakan UpdateTaskProtection untuk menandai satu atau lebih tugas sebagai terlindungi. Gunakan GetTaskProtection untuk mengambil status perlindungan.

    Contoh pendekatan ini adalah jika aplikasi Anda menghosting sesi server game sebagai tugas Amazon ECS. Ketika pengguna masuk ke sesi di server (tugas), Anda dapat menandai tugas sebagai dilindungi. Setelah pengguna keluar, Anda dapat menghapus perlindungan khusus untuk tugas ini atau menghapus perlindungan secara berkala untuk tugas serupa yang tidak lagi memiliki sesi aktif, tergantung pada kebutuhan Anda untuk menjaga server tidak aktif.

    Untuk informasi selengkapnya, lihat UpdateTaskProtection dan GetTaskProtection di Referensi API Layanan Kontainer Amazon Elastic.

Anda dapat menggabungkan kedua pendekatan tersebut. Misalnya, gunakan titik akhir agen Amazon ECS untuk mengatur perlindungan tugas dari dalam wadah dan gunakan Amazon ECS API untuk menghapus perlindungan tugas dari layanan pengontrol eksternal Anda.

Pertimbangan-pertimbangan

Pertimbangkan poin-poin berikut sebelum menggunakan perlindungan skala tugas:

  • Perlindungan penskalaan tugas hanya didukung dengan tugas yang diterapkan dari layanan.

  • Perlindungan penskalaan tugas didukung dengan tugas yang diterapkan dari layanan yang berjalan di Instans Terkelola Amazon ECS.

  • Sebaiknya gunakan titik akhir agen kontainer Amazon ECS karena agen Amazon ECS memiliki mekanisme coba ulang bawaan dan antarmuka yang lebih sederhana.

  • Anda dapat mengatur ulang periode kedaluwarsa perlindungan skala tugas dengan memanggil UpdateTaskProtection tugas yang sudah mengaktifkan perlindungan.

  • Tentukan berapa lama tugas akan diperlukan untuk menyelesaikan pekerjaan yang diperlukan dan atur expiresInMinutes properti yang sesuai. Jika Anda menetapkan kedaluwarsa perlindungan lebih lama dari yang diperlukan, maka Anda akan dikenakan biaya dan menghadapi penundaan dalam penerapan tugas baru.

  • Perlindungan penskalaan tugas didukung pada agen 1.65.0 kontainer Amazon ECS atau yang lebih baru. Anda dapat menambahkan dukungan untuk fitur ini pada instans Amazon EC2 menggunakan versi lama agen kontainer Amazon ECS dengan memperbarui agen ke versi terbaru. Untuk informasi selengkapnya, lihat Memperbarui agen kontainer Amazon ECS.

  • Pertimbangan penerapan:

    • Jika layanan menggunakan pembaruan bergulir, tugas baru akan dibuat tetapi tugas yang menjalankan versi lama tidak akan dihentikan sampai protectionEnabled dihapus atau kedaluwarsa. Anda dapat menyesuaikan maximumPercentage parameter dalam konfigurasi penerapan ke nilai yang memungkinkan tugas baru dibuat saat tugas lama dilindungi.

    • Jika blue/green pembaruan diterapkan, penerapan biru dengan tugas yang dilindungi tidak akan dihapus jika tugas memilikiprotectionEnabled. Lalu lintas akan dialihkan ke tugas-tugas baru yang muncul dan tugas lama hanya akan dihapus ketika dihapus atau ked protectionEnabled aluwarsa. Tergantung pada batas waktu CloudFormation pembaruan CodeDeploy atau, penerapan mungkin habis waktu dan tugas Blue yang lebih lama mungkin masih ada.

    • Jika Anda menggunakan CloudFormation, tumpukan pembaruan memiliki batas waktu 3 jam. Oleh karena itu, jika Anda mengatur perlindungan tugas lebih dari 3 jam, penerapan Anda CloudFormation dapat mengakibatkan kegagalan dan pengembalian.

      Selama tugas lama Anda dilindungi, CloudFormation tumpukan akan ditampilkanUPDATE_IN_PROGRESS. Jika perlindungan penskalaan tugas dihapus atau kedaluwarsa dalam jendela 3 jam, penerapan Anda akan berhasil dan pindah ke UPDATE_COMPLETE status. Jika penerapan macet UPDATE_IN_PROGRESS selama lebih dari 3 jam, itu akan gagal dan menunjukkan UPDATE_FAILED status, dan kemudian akan diputar kembali ke set tugas lama.

    • Amazon ECS mengirimkan peristiwa layanan ketika tugas yang dilindungi mencegah penerapan (bergulir atau blue/green) mencapai kondisi mapan, sehingga Anda dapat mengambil tindakan perbaikan. Saat mencoba memperbarui status perlindungan tugas, jika Anda menerima pesan DEPLOYMENT_BLOCKED kesalahan, itu berarti layanan memiliki tugas yang lebih terlindungi daripada jumlah tugas yang diinginkan untuk layanan. Untuk mengatasi kesalahan ini, lakukan salah satu hal berikut:

      • Tunggu hingga perlindungan tugas saat ini kedaluwarsa. Kemudian atur perlindungan tugas.

      • Tentukan tugas mana yang bisa dihentikan. Kemudian gunakan UpdateTaskProtection dengan protectionEnabled opsi yang disetel false untuk tugas-tugas ini.

      • Tingkatkan jumlah tugas yang diinginkan dari layanan menjadi lebih dari jumlah tugas yang dilindungi.

Izin IAM diperlukan untuk perlindungan penskalaan tugas

Tugas harus memiliki peran tugas Amazon ECS dengan izin berikut:

  • ecs:GetTaskProtection: Memungkinkan agen kontainer Amazon ECS untuk menelep GetTaskProtection on.

  • ecs:UpdateTaskProtection: Memungkinkan agen kontainer Amazon ECS untuk menelep UpdateTaskProtection on.