Apa perbedaan antara tugas dan layanan di AWS ECS?

114

Tampaknya seseorang dapat menjalankan Tugas atau Layanan berdasarkan Definisi Tugas. Apa perbedaan dan persamaan antara Tugas dan Layanan? Apakah ada petunjuk dalam fakta bahwa seseorang dapat menentukan "Grup Tugas" saat membuat Tugas tetapi tidak Layanan? Apakah Tugas dan Layanan secara hierarki sama dengan Instansiasi Definisi Tugas, atau apakah Layanan terdiri dari Tugas?

Bob Jones
sumber

Jawaban:

235

Sebuah Tugas Definisi adalah kumpulan dari 1 atau lebih wadah konfigurasi . Beberapa Tasks mungkin hanya memerlukan satu kontainer, sementara Tasks lain mungkin membutuhkan 2 atau lebih kontainer yang berpotensi ditautkan secara bersamaan. Definisi Task memungkinkan Anda menentukan image Docker mana yang akan digunakan, port mana yang akan diekspos, berapa banyak CPU dan memori yang dialokasikan, cara mengumpulkan log, dan menentukan variabel lingkungan.

Sebuah Tugas dibuat ketika Anda menjalankan Task langsung, yang meluncurkan kontainer (s) (didefinisikan dalam definisi tugas) sampai mereka berhenti atau keluar pada mereka sendiri, di mana titik mereka tidak diganti secara otomatis . Menjalankan Tugas secara langsung sangat ideal untuk pekerjaan jangka pendek, mungkin sebagai contoh hal-hal yang diselesaikan melalui CRON.

Sebuah layanan yang digunakan untuk jaminan bahwa Anda selalu memiliki beberapa jumlah Tugas berjalan setiap saat . Jika penampung Tugas keluar karena kesalahan, atau instans EC2 yang mendasarinya gagal dan diganti, Layanan ECS akan menggantikan Tugas yang gagal. Inilah sebabnya kami membuat Cluster sehingga Layanan memiliki banyak sumber daya dalam hal CPU, Memori, dan port Jaringan untuk digunakan. Bagi kami, tidak masalah instance Tasks mana yang berjalan selama dijalankan. Konfigurasi Layanan merujuk pada definisi Tugas. Sebuah Layanan bertanggung jawab untuk membuat Tugas .

Layanan biasanya digunakan untuk aplikasi yang berjalan lama seperti server web. Misalnya, jika saya menerapkan situs web saya yang didukung oleh Node.JS di Oregon (us-west-2), saya ingin mengatakan setidaknya tiga Tugas yang berjalan di tiga Availability Zone (AZ) demi Ketersediaan Tinggi; jika salah satu gagal saya memiliki dua lagi dan yang gagal akan diganti (baca itu sebagai penyembuhan diri !). Membuat Layanan adalah cara untuk melakukan ini. Jika saya memiliki 6 instans EC2 di kluster saya, 2 per AZ, Layanan akan secara otomatis menyeimbangkan Tugas lintas zona sebaik mungkin sambil juga mempertimbangkan cpu, memori, dan sumber daya jaringan.

MEMPERBARUI:

Saya tidak yakin akan membantu jika memikirkan hal-hal ini secara hierarkis.

Hal lain yang sangat penting adalah bahwa Layanan dapat dikonfigurasi untuk menggunakan penyeimbang beban, sehingga saat ia membuat Tugas — yaitu meluncurkan kontainer yang ditentukan dalam Definisi Tugas — Layanan akan secara otomatis mendaftarkan instans EC2 penampung dengan penyeimbang beban. Tugas tidak dapat dikonfigurasi untuk menggunakan penyeimbang beban, hanya Layanan yang bisa.

berbakat
sumber
1
Terima kasih banyak @talentedmrjones! Apakah itu sesederhana "gunakan Tugas untuk pekerjaan jangka pendek, dan gunakan Layanan untuk layanan yang berjalan lama"? Adakah kemungkinan Anda dapat mengomentari "Apakah Tugas dan Layanan secara hierarkis sama dengan Instansiasi Definisi Tugas, atau Layanan terdiri dari Tugas"?
Bob Jones
Apa yang saya tidak mengerti: mengapa ketika tugas dibuat saya dapat mengubah nilai variabel lingkungan tetapi tampaknya tidak mungkin untuk layanan
Nikolay Klimchuk
1
Layanan @NikolayKlimchuk hanya mengelola tugas - tugas itu sendiri yang menentukan dan menggunakan envars.
bwobst
apa itu "grup tugas"
red888
@NikolayKlimchuk kasihan telat balas. Layanan digunakan untuk menjadwalkan kontainer, tugas digunakan untuk menentukan kontainer. Inilah mengapa Anda menggunakan tugas untuk mengontrol env vars.
talentedmrjones
42

Dijelaskan dengan indah dalam kata-kata oleh @talentedmrjones. Gambar di bawah ini akan membantu Anda memvisualisasikannya dengan mudah :)

Cluster, Layanan, Instans EC2, dan Tugas sedang beraksi

realPK
sumber
Visualisasi yang bagus! :-)
sgsi
2
Jika ada penampil jawaban yang ingin mempelajari Amazon ECS lebih dalam, kunjungi freecodecamp.org/news/… . Dijelaskan dengan indah!
realPK
Halaman @realPK memang sangat membantu, terima kasih atas rekomendasinya!
Christophe
2

Definisi Tugas:

Ini adalah cetak biru yang menjelaskan container Docker mana yang akan dijalankan dan mewakili aplikasi Anda. Ini mencakup beberapa tugas.

Definisi Tugas

Layanan:

Contoh dari Definisi Tugas. Ini juga menentukan Tugas minimum dan maksimum dari satu Definisi Tugas yang dijalankan pada waktu tertentu, penskalaan otomatis, dan load balancing.

Contoh Kontainer ECS:

Ini adalah instans EC2 yang memiliki Docker dan Agen Kontainer ECS yang berjalan di atasnya. Agen menangani komunikasi antara ECS dan instans, memberikan status menjalankan kontainer dan mengelola kontainer baru.

Hubungan:

masukkan deskripsi gambar di sini

xwa130
sumber