Lindungi tugas Amazon ECS Anda agar tidak dihentikan oleh peristiwa penskalaan - 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 penskalaan

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

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

  • 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 bahkan jika semua pengguna telah logged-out untuk mengurangi latensi start-up dari reboot server.

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

Untuk melindungi tugas yang termasuk dalam layanan Anda agar tidak dihentikan dalam peristiwa scale-in, setel atribut keProtectionEnabled. true Bila Anda menyetel ProtectionEnabled 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 hingga maksimum 2880 menit (48 jam). Jika Anda menggunakan AWS CLI, Anda dapat menentukan --protection-enabled opsi.

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

Mekanisme perlindungan skala tugas

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

  • Titik akhir agen kontainer Amazon ECS

    Sebaiknya gunakan titik akhir agen penampung Amazon ECS untuk 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 Anda selesai, Anda dapat menghapus ProtectionEnabled atribut menggunakan titik akhir yang sama, membuat tugas memenuhi syarat untuk penghentian selama peristiwa penskalaan berikutnya.

    Untuk informasi selengkapnya tentang titik akhir agen penampung Amazon ECS, lihat. Titik akhir perlindungan skala tugas Amazon ECS

  • Amazon ECS API

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

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

    Untuk informasi selengkapnya, lihat UpdateTaskProtectiondan GetTaskProtectiondi Referensi API Amazon Elastic Container Service.

Anda dapat menggabungkan kedua pendekatan. 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

Pertimbangkan poin-poin berikut sebelum menggunakan perlindungan skala tugas:

  • Sebaiknya gunakan titik akhir agen penampung 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 tugas UpdateTaskProtection yang telah mengaktifkan perlindungan.

  • Tentukan berapa lama tugas yang dibutuhkan untuk menyelesaikan pekerjaan yang diperlukan dan mengatur expiresInMinutes properti yang sesuai. Jika Anda mengatur kedaluwarsa perlindungan lebih lama dari yang diperlukan, maka Anda akan dikenakan biaya dan menghadapi keterlambatan dalam penyebaran tugas baru.

  • Perlindungan skala tugas didukung pada agen 1.65.0 kontainer Amazon ECS atau yang lebih baru.

    Anda dapat menambahkan dukungan untuk fitur ini di EC2 instans Amazon menggunakan versi lama agen penampung Amazon ECS dengan memperbarui agen ke versi terbaru. Untuk informasi selengkapnya, lihat Memperbarui agen kontainer Amazon ECS.

  • Pertimbangan penyebaran:

    • Jika layanan menggunakan pembaruan bergulir, tugas baru akan dibuat tetapi tugas yang menjalankan versi lama tidak akan dihentikan sampai dihapus atau protectionEnabled 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 baru yang muncul dan tugas lama hanya akan dihapus ketika dihapus atau protectionEnabled kedaluwarsa. Bergantung pada batas waktu CodeDeploy atau CloudFormation pembaruan, penerapan mungkin batas waktu dan tugas Biru yang lebih lama mungkin masih ada.

    • Jika Anda menggunakan CloudFormation, update-stack memiliki batas waktu 3 jam. Oleh karena itu, jika Anda mengatur perlindungan tugas Anda lebih dari 3 jam, maka CloudFormation penerapan Anda dapat mengakibatkan kegagalan dan kemunduran.

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

    • Amazon ECS mengirimkan peristiwa layanan saat tugas yang dilindungi menjaga penerapan (bergulir atau biru/hijau) agar tidak mencapai kondisi tunak, sehingga Anda dapat mengambil tindakan perbaikan. Saat mencoba memperbarui status perlindungan suatu 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 skala tugas

Tugas harus memiliki peran tugas Amazon ECS dengan izin berikut:

  • ecs:GetTaskProtection: Memungkinkan agen kontainer Amazon ECS untuk meneleponGetTaskProtection.

  • ecs:UpdateTaskProtection: Memungkinkan agen kontainer Amazon ECS untuk meneleponUpdateTaskProtection.