Pengontrol dan strategi penyebaran 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.

Pengontrol dan strategi penyebaran layanan Amazon ECS

Sebelum Anda menerapkan layanan Anda, tentukan opsi untuk menerapkannya, dan fitur yang digunakan layanan.

Strategi penjadwalan

Ada dua strategi penjadwal layanan yang tersedia:

  • REPLICAStrategi penjadwalan replika menempatkan dan mempertahankan jumlah tugas yang diinginkan di seluruh klaster 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 Strategi penjadwalan 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 Strategi penjadwalan daemon.

    catatan

    Tugas Fargate tidak mendukung strategi DAEMON penjadwalan.

Strategi penjadwalan 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 EC2 instance, 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 instance sebelum tugas layanan replika. EC2 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 container yang valid di Availability Zone yang optimal berdasarkan langkah sebelumnya. Menyukai instance kontainer dengan jumlah tugas yang berjalan paling sedikit untuk layanan ini.

Kami menyarankan Anda menggunakan fitur penyeimbangan kembali layanan ketika Anda menggunakan REPLICA strategi karena membantu memastikan ketersediaan tinggi untuk layanan Anda.

Strategi 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 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 untuk berhenti setelah semua tugas replika 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 kontainer bertransisi ke DRAINING status, tugas daemon di atasnya dihentikan. Penjadwal layanan juga memantau saat instans kontainer baru ditambahkan ke klaster Anda dan menambahkan tugas daemon ke dalamnya.

Saat Anda menentukan konfigurasi penerapan, nilai untuk maximumPercent parameter harus 100 (ditentukan sebagai persentase), yang merupakan nilai default yang digunakan jika tidak disetel. Nilai default untuk minimumHealthyPercent parameter adalah 0 (ditentukan sebagai persentase).

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. Penerapan baru juga dimulai saat memperbarui layanan atau mengatur revisi definisi tugas yang berbeda. 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 yang 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.

Pengontrol penyebaran

Pengontrol penerapan adalah mekanisme yang menentukan bagaimana tugas digunakan untuk layanan Anda. Opsi yang valid adalah:

  • ECS

    Saat membuat layanan yang menggunakan pengontrol ECS penyebaran, Anda dapat memilih di antara strategi penerapan berikut:

    • ROLLING: Saat Anda membuat layanan yang menggunakan strategi penerapan rolling update (ROLLING), penjadwal layanan Amazon ECS menggantikan tugas yang sedang berjalan dengan tugas baru. Jumlah tugas yang ditambahkan atau dihapus Amazon ECS dari layanan selama pembaruan bergulir dikendalikan oleh konfigurasi penyebaran layanan.

      Penerapan pembaruan bergulir paling cocok untuk skenario berikut:

      • Pembaruan layanan bertahap: Anda perlu memperbarui layanan Anda secara bertahap tanpa membuat seluruh layanan offline sekaligus.

      • Persyaratan sumber daya terbatas: Anda ingin menghindari biaya sumber daya tambahan untuk menjalankan dua lingkungan lengkap secara bersamaan (seperti yang dipersyaratkan oleh penerapan biru/hijau).

      • Waktu penerapan yang dapat diterima: Aplikasi Anda dapat mentolerir proses penerapan yang lebih lama, karena pembaruan bergulir menggantikan tugas satu per satu.

      • Tidak perlu roll back instan: Layanan Anda dapat mentolerir proses rollback yang memakan waktu beberapa menit, bukan detik.

      • Proses penyebaran sederhana: Anda lebih memilih pendekatan penerapan langsung tanpa kerumitan mengelola beberapa lingkungan, grup target, dan pendengar.

      • Tidak ada persyaratan penyeimbang beban: Layanan Anda tidak menggunakan atau memerlukan penyeimbang beban, Application Load Balancer, Network Load Balancer, atau Service Connect (yang diperlukan untuk penerapan). blue/green

      • Aplikasi stateful: Aplikasi Anda mempertahankan status yang membuatnya sulit untuk menjalankan dua lingkungan paralel.

      • Sensitivitas biaya: Anda ingin meminimalkan biaya penerapan dengan tidak menjalankan lingkungan duplikat selama penerapan.

      Pembaruan bergulir adalah strategi penerapan default untuk layanan dan memberikan keseimbangan antara keamanan penerapan dan efisiensi sumber daya untuk banyak skenario aplikasi umum.

    • BLUE_GREENStrategi penyebaran biru/hijau (BLUE_GREEN) adalah metodologi rilis yang mengurangi waktu henti dan risiko dengan menjalankan dua lingkungan produksi identik yang disebut biru dan hijau. Dengan blue/green penerapan Amazon ECS, Anda dapat memvalidasi revisi layanan baru sebelum mengarahkan lalu lintas produksi kepada mereka. Pendekatan ini memberikan cara yang lebih aman untuk menerapkan perubahan dengan kemampuan untuk memutar kembali dengan cepat jika diperlukan.

      blue/green Penerapan Amazon ECS paling cocok untuk skenario berikut:

      • Validasi layanan: Ketika Anda perlu memvalidasi revisi layanan baru sebelum mengarahkan lalu lintas produksi ke mereka

      • Zero downtime: Saat layanan Anda memerlukan penerapan zero-downtime

      • Instant roll back: Ketika Anda membutuhkan kemampuan untuk memutar kembali dengan cepat jika masalah terdeteksi

      • Persyaratan penyeimbang beban: Ketika layanan Anda menggunakan Application Load Balancer, Network Load Balancer, atau Service Connect

  • Eksternal

    Gunakan pengontrol penerapan pihak ketiga.

  • Penerapan biru/hijau (didukung oleh) AWS CodeDeploy

    CodeDeploy menginstal versi aplikasi yang diperbarui sebagai set tugas pengganti baru dan mengalihkan lalu lintas produksi dari tugas aplikasi asli yang disetel ke set tugas pengganti. Set tugas asli dihentikan setelah penerapan berhasil. Gunakan pengontrol penerapan ini untuk memverifikasi penyebaran layanan baru sebelum mengirim lalu lintas produksi ke sana.