Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Lindungi ECS tugas Amazon Anda agar tidak dihentikan oleh peristiwa penskalaan
Anda dapat menggunakan perlindungan penskalaan ECS tugas Amazon untuk melindungi tugas 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. Sebagai 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 ECS tugas Amazon 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
Secara default, tugas dilindungi selama 2 jam. Anda dapat menyesuaikan periode perlindungan dengan menggunakan expiresInMinutes
atribut. Anda dapat melindungi tugas Anda selama minimal 1 menit dan hingga maksimum 2880 menit (48 jam).
Setelah tugas menyelesaikan pekerjaan yang diperlukan, Anda dapat mengatur protectionEnabled
atribut kefalse
, memungkinkan tugas dihentikan oleh peristiwa skala berikutnya.
Mekanisme perlindungan skala tugas
Anda dapat mengatur dan mendapatkan perlindungan skala tugas menggunakan titik akhir agen ECS penampung Amazon atau Amazon. ECS API
-
Titik akhir agen ECS kontainer Amazon
Sebaiknya gunakan titik akhir agen ECS penampung Amazon 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 SQS pesan, Anda dapat mengatur
ProtectionEnabled
atribut melalui jalur titik akhir perlindungan skala tugas$ECS_AGENT_URI/task-protection/v1/state
dari dalam wadah. Amazon tidak ECS akan menghentikan tugas ini selama acara scale-in. Setelah tugas Anda selesai, Anda dapat menghapusProtectionEnabled
atribut menggunakan titik akhir yang sama, membuat tugas memenuhi syarat untuk penghentian selama peristiwa penskalaan berikutnya.Untuk informasi selengkapnya tentang titik akhir agen ECS penampung Amazon, lihatTitik ECS akhir perlindungan skala tugas Amazon.
-
Amazon ECS API
Anda dapat menggunakan Amazon ECS API untuk mengatur 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. GunakanGetTaskProtection
untuk mengambil status perlindungan.Contoh dari pendekatan ini adalah jika aplikasi Anda menghosting sesi server game sebagai ECS tugas Amazon. 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 APIReferensi Layanan Amazon Elastic Container.
Anda dapat menggabungkan kedua pendekatan. Misalnya, gunakan titik akhir ECS agen Amazon 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 ECS penampung Amazon karena ECS agen Amazon 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 di agen ECS kontainer Amazon
1.65.0
atau yang lebih baru.Anda dapat menambahkan dukungan untuk fitur ini di EC2 instans Amazon menggunakan versi lama agen ECS penampung Amazon dengan memperbarui agen ke versi terbaru. Untuk informasi selengkapnya, lihat Memperbarui agen ECS penampung Amazon.
-
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 menyesuaikanmaximumPercentage
parameter dalam konfigurasi penerapan ke nilai yang memungkinkan tugas baru dibuat saat tugas lama dilindungi. -
Jika pembaruan biru/hijau diterapkan, penerapan biru dengan tugas yang dilindungi tidak akan dihapus jika tugas memiliki.
protectionEnabled
Lalu lintas akan dialihkan ke tugas baru yang muncul dan tugas lama hanya akan dihapus ketika dihapus atauprotectionEnabled
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 ditampilkan
UPDATE_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 macetUPDATE_IN_PROGRESS
selama lebih dari 3 jam, itu akan gagal dan menunjukkanUPDATE_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
denganprotectionEnabled
opsi yang disetelfalse
untuk tugas-tugas ini. -
Tingkatkan jumlah tugas yang diinginkan dari layanan menjadi lebih dari jumlah tugas yang dilindungi.
-
-
IAMizin yang diperlukan untuk perlindungan skala tugas
Tugas harus memiliki peran ECS tugas Amazon dengan izin berikut:
-
ecs:GetTaskProtection
: Memungkinkan agen ECS kontainer Amazon untuk meneleponGetTaskProtection
. -
ecs:UpdateTaskProtection
: Memungkinkan agen ECS kontainer Amazon untuk meneleponUpdateTaskProtection
.