Layanan-layanan Amazon ECS - Amazon Elastic Container Service

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

Layanan-layanan Amazon ECS

Anda dapat menggunakan layanan Amazon ECS untuk menjalankan dan mempertahankan jumlah instans definisi tugas yang ditentukan secara bersamaan di kluster Amazon ECS. Jika salah satu tugas Anda gagal atau berhenti, penjadwal layanan Amazon ECS meluncurkan contoh lain dari definisi tugas Anda untuk menggantikannya. Ini membantu mempertahankan jumlah tugas yang Anda inginkan dalam layanan.

Anda juga dapat menjalankan layanan Anda secara opsional di belakang penyeimbang beban. Penyeimbang beban mendistribusikan lalu lintas ke seluruh tugas yang terkait dengan layanan.

Konsep penjadwal layanan

Kami menyarankan Anda menggunakan penjadwal layanan untuk layanan dan aplikasi stateless yang berjalan lama. Penjadwal layanan memastikan bahwa strategi penjadwalan yang Anda tentukan diikuti dan menjadwal ulang tugas ketika tugas gagal. Misalnya, jika infrastruktur yang mendasarinya gagal, penjadwal layanan menjadwal ulang tugas. Anda dapat menggunakan strategi dan batasan penempatan tugas untuk menyesuaikan cara penjadwal menempatkan dan mengakhiri tugas. Jika tugas dalam layanan berhenti, penjadwal meluncurkan tugas baru untuk menggantikannya. Proses ini berlanjut hingga layanan Anda mencapai jumlah tugas yang Anda inginkan berdasarkan strategi penjadwalan yang digunakan layanan. Strategi penjadwalan layanan juga disebut sebagai jenis layanan.

Penjadwal layanan juga menggantikan tugas yang ditentukan tidak sehat setelah pemeriksaan kesehatan kontainer atau pemeriksaan kesehatan kelompok sasaran penyeimbang beban gagal. Penggantian ini tergantung pada parameter definisi maximumPercent dan desiredCount layanan. Jika tugas ditandai tidak sehat, penjadwal layanan akan memulai tugas pengganti terlebih dahulu. Jika tugas penggantian memiliki status kesehatanHEALTHY, penjadwal layanan menghentikan tugas yang tidak sehat. Jika tugas penggantian memiliki status kesehatanUNHEALTHY, penjadwal akan menghentikan tugas penggantian yang tidak sehat atau tugas tidak sehat yang ada untuk mendapatkan jumlah tugas total yang samadesiredCount. Jika maximumPercent parameter membatasi penjadwal untuk memulai tugas penggantian terlebih dahulu, penjadwal akan menghentikan tugas yang tidak sehat satu per satu secara acak untuk membebaskan kapasitas, dan kemudian memulai tugas pengganti. Proses start dan stop berlanjut sampai semua tugas yang tidak sehat diganti dengan tugas yang sehat. Setelah semua tugas yang tidak sehat telah diganti dan hanya tugas sehat yang berjalan, jika jumlah tugas total melebihidesiredCount, tugas sehat dihentikan secara acak hingga jumlah tugas total sama. desiredCount Untuk informasi selengkapnya tentang maximumPercent dandesiredCount, lihat Parameter definisi layanan.

catatan

Perilaku ini tidak berlaku untuk tugas yang dijalankan dan dikelola oleh layanan yang menggunakan jenis penerapan pembaruan bergulir. Selama pembaruan bergulir, penjadwal layanan pertama-tama menghentikan tugas yang tidak sehat dan kemudian memulai tugas penggantian.

Penjadwal layanan menyertakan logika yang membatasi seberapa sering tugas dimulai ulang jika tugas berulang kali gagal dimulai. Jika tugas dihentikan tanpa memasukkan RUNNING status, penjadwal layanan mulai memperlambat upaya peluncuran dan mengirimkan pesan acara layanan. Perilaku ini mencegah sumber daya yang tidak perlu digunakan untuk tugas yang gagal sebelum Anda dapat menyelesaikan masalah. Setelah layanan diperbarui, penjadwal layanan melanjutkan perilaku penjadwalan normal. Lihat informasi yang lebih lengkap di Logika throttle layanan Amazon ECS dan Pesan peristiwa layanan.

Ada dua strategi penjadwal layanan yang tersedia:

  • REPLICAStrategi penjadwalan replika menempatkan dan mempertahankan jumlah tugas yang diinginkan di seluruh cluster Anda. Secara default tugas tersebar di seluruh Availability Zone. Anda dapat menggunakan strategi penempatan tugas dan kendala untuk menyesuaikan keputusan penempatan tugas. Untuk informasi selengkapnya, lihat Replika.

  • DAEMON—Strategi penjadwalan daemon menerapkan tepat satu tugas pada setiap instance kontainer aktif yang memenuhi semua batasan penempatan tugas yang Anda tentukan di cluster Anda. Saat menggunakan strategi ini, tidak perlu menentukan jumlah tugas yang diinginkan, strategi penempatan tugas, atau menggunakan kebijakan Auto Scaling Layanan. Untuk informasi selengkapnya, lihat Daemon.

    catatan

    Tugas Fargate tidak mendukung strategi DAEMON penjadwalan.

Daemon

Strategi penjadwalan daemon men-deploy tepat satu tugas untuk setiap instans kontainer aktif yang memenuhi semua batasan penempatan tugas yang ditentukan di klaster Anda. Penjadwal layanan juga mengevaluasi batasan penempatan tugas untuk menjalankan tugas, dan menghentikan tugas yang tidak memenuhi batasan penempatan. Saat menggunakan strategi ini, Anda tidak perlu menentukan jumlah tugas yang diinginkan, strategi penempatan tugas, atau menggunakan kebijakan Auto Scaling Service.

Amazon ECS menyimpan sumber daya komputasi instans kontainer termasuk CPU, memori, dan antarmuka jaringan untuk tugas daemon. Saat Anda meluncurkan layanan daemon di klaster dengan layanan replika lainnya, Amazon ECS memprioritaskan tugas daemon. Ini berarti bahwa tugas daemon adalah tugas pertama yang diluncurkan pada instance dan tugas terakhir yang harus dihentikan. Strategi ini memastikan bahwa sumber daya tidak digunakan oleh tugas replika yang tertunda dan tersedia untuk tugas daemon.

Penjadwal layanan daemon tidak menempatkan tugas apa pun pada instance yang memiliki status. DRAINING Jika instance container bertransisi ke DRAINING status, tugas daemon di atasnya dihentikan. Penjadwal layanan memastikan bahwa tugas daemon adalah yang terakhir berhenti setelah semua tugas replika dihentikan. Penjadwal layanan juga memantau saat instans kontainer baru ditambahkan ke klaster Anda dan menambahkan tugas daemon ke dalamnya.

Jika konfigurasi deployment ditentukan, parameter persentase maksimum harus 100. Nilai default untuk layanan daemon maximumPercent adalah 200%. Nilai default untuk layanan daemon untuk minimumHealthyPercent adalah 0%.

Anda harus memulai ulang layanan ketika Anda mengubah batasan penempatan untuk layanan daemon. Amazon ECS secara dinamis memperbarui sumber daya yang dicadangkan pada instans yang memenuhi syarat untuk tugas daemon. Untuk instans yang sudah ada, penjadwal mencoba menempatkan tugas pada instans.

Penerapan baru dimulai ketika ada perubahan pada ukuran tugas atau reservasi sumber daya kontainer dalam definisi tugas. Amazon ECS mengambil reservasi CPU dan memori yang diperbarui untuk daemon, dan kemudian memblokir kapasitas itu untuk tugas daemon.

Jika sumber daya tidak mencukupi untuk salah satu kasus di atas, hal-hal berikut akan terjadi:

  • Penempatan tugas gagal.

  • Sebuah CloudWatch peristiwa dihasilkan.

  • Amazon ECS terus mencoba dan menjadwalkan tugas pada instance dengan menunggu sumber daya tersedia.

  • Amazon ECS membebaskan instans cadangan yang tidak lagi memenuhi kriteria batasan penempatan dan menghentikan tugas daemon terkait.

Strategi penjadwalan daemon dapat digunakan dalam kasus-kasus berikut:

  • Menjalankan kontainer aplikasi

  • Menjalankan kontainer dukungan untuk tugas pencatatan, pemantauan dan pelacakan

Tugas yang menggunakan tipe peluncuran Fargate atau tipe pengontrol EXTERNAL penerapan CODE_DEPLOY atau tidak mendukung strategi penjadwalan daemon.

Saat penjadwal layanan berhenti menjalankan tugas, penjadwal layanan mencoba untuk menjaga keseimbangan di seluruh Availability Zone di klaster Anda. Penjadwal menggunakan logika berikut:

  • Jika strategi penempatan ditentukan, gunakan strategi tersebut untuk memilih tugas mana yang akan diakhiri. Misalnya, jika layanan memiliki strategi penyebaran Availability Zone yang ditentukan, tugas dipilih yang meninggalkan tugas yang tersisa dengan spread terbaik.

  • Jika tidak ada strategi penempatan yang ditentukan, gunakan logika berikut untuk menjaga keseimbangan di seluruh Availability Zone di klaster Anda:

    • Urutkan instance kontainer yang valid. Berikan prioritas pada instance yang memiliki jumlah tugas berjalan terbesar untuk layanan ini di Availability Zone masing-masing. Misalnya, jika zona A memiliki satu tugas layanan yang berjalan dan zona B dan C masing-masing memiliki dua tugas layanan yang berjalan, instance kontainer di zona B atau C dianggap optimal untuk penghentian.

    • Hentikan tugas pada instance container di Availability Zone optimal berdasarkan langkah sebelumnya. Mendukung instance kontainer dengan jumlah tugas yang berjalan terbesar untuk layanan ini.

Replika

Strategi penjadwalan replika menempatkan dan mempertahankan jumlah tugas yang diinginkan di klaster Anda.

Untuk layanan yang menjalankan tugas di Fargate, saat penjadwal layanan meluncurkan tugas baru atau berhenti menjalankan tugas, penjadwal layanan menggunakan upaya terbaik untuk menjaga keseimbangan di seluruh Availability Zone. Anda tidak perlu menentukan strategi penempatan tugas atau kendala.

Saat membuat layanan yang menjalankan tugas pada instans EC2, Anda dapat menentukan strategi dan batasan penempatan tugas secara opsional untuk menyesuaikan keputusan penempatan tugas. Jika tidak ada strategi penempatan tugas atau kendala yang ditentukan, maka secara default penjadwal layanan menyebarkan tugas di seluruh Availability Zones. Penjadwal layanan menggunakan logika berikut:

  • Menentukan instance kontainer mana di klaster Anda yang dapat mendukung definisi tugas layanan Anda (misalnya, atribut CPU, memori, port, dan instance container yang diperlukan).

  • Menentukan instance kontainer mana yang memenuhi batasan penempatan apa pun yang ditentukan untuk layanan.

  • Bila Anda memiliki layanan replika yang bergantung pada layanan daemon (misalnya, tugas router log daemon yang perlu dijalankan sebelum tugas dapat menggunakan logging), buat batasan penempatan tugas yang memastikan bahwa tugas layanan daemon ditempatkan pada instans EC2 sebelum tugas layanan replika. Untuk informasi selengkapnya, lihat Contoh kendala penempatan tugas Amazon ECS.

  • Ketika ada strategi penempatan yang ditentukan, gunakan strategi itu untuk memilih instance dari kandidat yang tersisa.

  • Jika tidak ada strategi penempatan yang ditentukan, gunakan logika berikut untuk menyeimbangkan tugas di seluruh Availability Zone di klaster Anda:

    • Mengurutkan instance kontainer yang valid. Memberikan prioritas pada instance yang memiliki jumlah tugas yang berjalan paling sedikit untuk layanan ini di Availability Zone masing-masing. Misalnya, jika zona A memiliki satu tugas layanan berjalan, sedangkan zona B dan C masing-masing tidak memliki tugas layanan berjalan, maka instans kontainer yang valid, baik di zona B ataupun C dianggap optimal untuk penempatan.

    • Menempatkan tugas layanan baru pada instance kontainer yang valid di Availability Zone yang optimal berdasarkan langkah sebelumnya. Menyukai instance kontainer dengan jumlah tugas yang berjalan paling sedikit untuk layanan ini.

Konsep layanan tambahan

  • Anda dapat secara opsional menjalankan layanan di belakang penyeimbang beban. Untuk informasi selengkapnya, lihat Mendistribusikan lalu lintas layanan Amazon ECS menggunakan load balancing.

  • Anda dapat menentukan konfigurasi deployment untuk layanan Anda. Penerapan dimulai dengan memperbarui definisi tugas dari suatu layanan. Selama deloyment, penjadwal layanan menggunakan parameter persentase minimum yang sehat dan persentase maksimum untuk menentukan strategi deployment. Untuk informasi selengkapnya, lihat Parameter ketentuan layanan.

  • Anda dapat mengonfigurasi layanan Anda secara opsional untuk menggunakan penemuan layanan Amazon ECS. Penemuan layanan menggunakan API AWS Cloud Map autonaming untuk mengelola entri DNS untuk tugas layanan Anda. Ini membuat mereka dapat ditemukan dari dalam VPC Anda. Untuk informasi selengkapnya, lihat Penemuan Layanan .

  • Saat Anda menghapus layanan, jika masih ada tugas yang berjalan yang memerlukan pembersihan, layanan akan berpindah dari status ACTIVE ke DRAINING status, dan layanan tidak lagi terlihat di konsol atau dalam operasi ListServices API. Setelah semua tugas bertransisi ke STOPPED status STOPPING atau, layanan berpindah dari INACTIVE status DRAINING ke status. Anda dapat melihat layanan dalam INACTIVE status DRAINING atau menggunakan operasi DescribeServices API. Namun, di masa depan, INACTIVE layanan mungkin dibersihkan dan dibersihkan dari pencatatan Amazon ECS, dan DescribeServices panggilan pada layanan tersebut mengembalikan kesalahan. ServiceNotFoundException

  • Waktu pemanggangan adalah periode waktu setelah versi layanan baru telah ditingkatkan dan versi layanan lama telah ditingkatkan, di mana Amazon ECS terus memantau alarm yang terkait dengan penyebaran. Amazon ECS menghitung periode waktu ini berdasarkan konfigurasi alarm yang terkait dengan penerapan.

    Waktu pemanggangan hanya berlaku saat Anda menggunakan CloudWatch alarm untuk mendeteksi kegagalan penerapan. Untuk informasi selengkapnya, lihat Metode deteksi kegagalan.