Apa perbedaan antara Amazon ECS dan Amazon EC2?

127

Saya baru saja memulai di AWS EC2. Saya memahami bahwa EC2 seperti komputer jarak jauh di mana saya dapat melakukan hampir semua hal yang saya inginkan. Kemudian saya mengetahui tentang ECS. Saya tahu itu menggunakan Docker, tapi saya bingung tentang hubungan antara keduanya.

Apakah ECS hanya instalasi Docker di EC2? Jika saya sudah memiliki EC2 dan saya memulai ECS, apakah itu berarti saya memiliki dua instans?

kenaikan gaji
sumber

Jawaban:

169

Pertanyaanmu

Apakah ECS hanya sebuah buruh pelabuhan yang diinstal di EC2? Jika saya sudah memiliki EC2, lalu saya memulai ECS, apakah itu berarti saya memiliki dua instans?

Tidak. AWS ECSHanyalah pengelompokan logis (cluster) EC2instans, dan semua EC2instans bagian dari ECStindakan sebagai Dockerhost, misalnya ECS dapat mengirim perintah untuk meluncurkan wadah pada mereka ( EC2). Jika Anda sudah memiliki EC2, lalu meluncurkan ECS, Anda masih memiliki satu instans. Jika Anda menambahkan / mendaftarkan (dengan menginstal AWS ECS Container Agent) EC2 ke ECS itu akan menjadi bagian dari klaster, tetapi masih satu instans EC2.

Amazon ECS tanpa EC2 yang terdaftar (ditambahkan ke klaster) tidak berguna.


TL; DR

Gambaran

  • EC2 - hanyalah mesin jarak jauh (virtual).
  • ECSsingkatan Elastic Container Service- sesuai definisi dasar cluster komputer , ECSpada dasarnya adalah pengelompokan logis dari EC2mesin / instance . Secara teknis, ECSini hanyalah konfigurasi untuk penggunaan dan pengelolaan EC2 sumber daya instans Anda secara efisien, misalnya penyimpanan, memori, CPU, dll.

Untuk menyederhanakannya lebih lanjut, jika Anda telah meluncurkan Amazon ECSdengan tidak ada EC2contoh yang ditambahkan padanya, itu tidak ada gunanya yaitu Anda tidak dapat berbuat apa-apa. ECSmasuk akal hanya sekali satu (atau lebih) EC2contoh ditambahkan ke dalamnya.

Hal membingungkan berikutnya di sini adalah istilah container - yang bukan instance mesin yang sepenuhnya tervirtualisasi, dan Docker adalah salah satu teknologi yang dapat kita gunakan untuk membuat instance container. Dockeradalah utilitas yang dapat Anda instal di mesin kami, yang menjadikannya Dockerhost, dan di host ini Anda dapat membuat container (sama seperti mesin virtual - tetapi jauh lebih ringan). Singkatnya, ECSini hanya tentang pengelompokan instans EC2, dan menggunakan Dockeruntuk membuat instance container / instans / mesin virtual pada EC2host ( ) ini .

Yang perlu Anda lakukan adalah meluncurkan ECS, dan mendaftar / menambahkan sebanyak mungkin EC2instance yang Anda butuhkan. Anda dapat menambahkan / mendaftarkan instans EC2, yang Anda butuhkan hanyalah Agen Kontainer Amazon ECS yang berjalan pada instans / mesin EC2 Anda, yang dapat dilakukan secara manual atau langsung menggunakan AMI khusus (Amazon Machine Image), yaitu AMI yang dioptimalkan Amazon ECS, yang sudah memiliki Agen Kontainer Amazon ECS. Selama peluncuran instans EC2 baru, Agen secara otomatis mendaftarkannya ke klaster ECS default.

The Agen kontainer berjalan pada masing-masing kasus ( EC2contoh) dalam sebuah Amazon ECSklaster mengirimkan informasi tentang tugas contoh saat berjalan dan pemanfaatan sumber daya untuk Amazon ECS, dan dimulai dan berhenti tugas setiap kali menerima permintaan dari Amazon ECS. Untuk informasi selengkapnya, lihat Agen Kontainer Amazon ECS . Setelah disetel, setiap instance container yang dibuat (dari EC2mesin / node apa pun ) akan menjadi instance di Amazon ECSswarm.


Untuk informasi lebih lanjut - baca langkah 10 dari dokumentasi ini: Meluncurkan Instans Kontainer Amazon ECS :

Pilih AMI untuk instance container Anda. Anda dapat memilih AMI yang dioptimalkan Amazon ECS, atau sistem operasi lain, seperti CoreOS atau Ubuntu. Jika Anda tidak memilih AMI yang dioptimalkan Amazon ECS, Anda harus mengikuti prosedur dalam Menginstal Agen Kontainer Amazon ECS .

Secara default, instance container Anda diluncurkan ke cluster default Anda. Jika Anda ingin meluncurkan ke cluster Anda sendiri, bukan default, pilih daftar Detail Lanjutan dan tempelkan skrip berikut ke bidang Data pengguna, ganti nama_anda dengan nama cluster Anda.

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

Atau, jika Anda memiliki file ecs.config di Amazon S3 dan telah mengaktifkan akses baca-saja Amazon S3 ke peran instans kontainer Anda, pilih daftar Detail Lanjutan dan tempelkan skrip berikut ke bidang Data pengguna, ganti nama_bucket_Anda dengan nama keranjang Anda untuk menginstal AWS CLI dan menulis file konfigurasi Anda pada waktu peluncuran. Catatan Untuk informasi selengkapnya tentang konfigurasi ini, lihat Menyimpan Konfigurasi Mesin Virtual Kontainer di Amazon S3.

#!/bin/bash
yum install -y aws-cli
aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config

Hanya untuk memperjelasnya lebih lanjut - Anda dapat membuat penampung pada satu EC2instance Anda tanpa ECS. Instal salah satu teknologi containerization yaitu Dockerdan jalankan perintah create container, setel Anda EC2sebagai Dockerhost, dan miliki Dockercontainer sebanyak yang Anda inginkan (atau sebanyak yang EC2diizinkan oleh resource Anda).

Nabeel Ahmed
sumber
8
Bukankah ECS adalah singkatan dari Elastic Container Service?
Jika
1
Perlu dicatat bahwa jawaban ini sekarang secara substansial sudah ketinggalan zaman dengan peluncuran AWS Fargate pada awal 2018 (yang menjalankan ECS): aws.amazon.com/fargate
bsplosion
77

Dengan kata sederhana, ECS adalah manajer sementara instans EC2 seperti karyawan. Semua karyawan (EC2) di bawah manajer ini (ECS) dapat melakukan tugas "Docker" dan manajer juga memahami "buruh pelabuhan" dengan cukup baik. Jadi, kapan pun Anda membutuhkan sumber daya "buruh pelabuhan", Anda muncul ke Manajer. Manajer sudah memiliki status dari setiap karyawan (EC2) memutuskan mana yang harus melakukan tugas.

Sekarang, kembali ke pertanyaan Anda, manajer tanpa "karyawan" tidak masuk akal.

masukkan deskripsi gambar di sini

subodhkarwa.dll
sumber
Penjelasan yang sangat bagus. Daripada Anda!
Matley
Nah, Anda dapat memiliki instans EC2 tanpa ECS tetapi itu hanya akan seperti mesin virutal sederhana.
Lea Reimann
31

EC2 memungkinkan Anda meluncurkan instans individual yang dapat Anda gunakan untuk apa pun yang Anda suka. ECS adalah layanan kontainer, yang artinya akan meluncurkan instans yang akan siap meluncurkan aplikasi kontainer. Perbedaan utama antara kedua layanan tersebut adalah dengan EC2 Anda harus mengelola setiap instans secara terpisah dengan metode apa pun yang Anda pilih (secara manual, menggunakan alat CM atau cara lain) - menerapkan aplikasi Anda dan menjaga koneksi antar server sendiri. ECS memungkinkan Anda meluncurkan kluster mesin yang akan berfungsi sebagai tempat penerapan aplikasi penampung Anda, memungkinkan Anda memperlakukan semua instans dalam kluster sebagai satu instans besar yang tersedia untuk beban kerja penampung Anda.

Dan untuk menjawab pertanyaan Anda - Anda dapat memulai klaster ECS tanpa instans di dalamnya, tetapi klaster tersebut tidak akan dapat menjalankan apa pun di dalamnya. Setelah Anda mendaftarkan instans EC2 di dalam klaster ECS, kontainer siap untuk dijalankan di dalamnya. Jadi intinya adalah - Anda dapat menggunakan ECS dan EC2 hanya dengan satu instans, tetapi itu bukan kasus penggunaan sebenarnya yang dibuat untuk layanan ini.

Yaron Idan
sumber
3

Sederhananya, Elastic Container Service (ECS) adalah layanan orkestrasi kontainer Docker.

Anda dapat memintanya untuk menjalankan satu atau lebih image Docker, baik sebagai " Service " yang mampu melakukan penskalaan otomatis atau sebagai " Task " ad-hoc .

Layanan dan tugas dijalankan di " Cluster ". Awalnya, Cluster adalah grup dari satu atau beberapa server EC2 yang telah dikonfigurasi sebelumnya yang menjalankan Agen Klaster ECS. Agen Cluster akan menjadwalkan kontainer di server EC2. Server EC2 ini muncul di daftar Instans EC2 Anda dan dikenakan biaya EC2 reguler per menit - Anda bahkan dapat melakukan SSH ke server tersebut seperti server EC2 biasa. Jika Anda menginginkan lebih banyak kapasitas untuk menjalankan lebih banyak Layanan atau Tugas, atau jika Anda menginginkan ketahanan terhadap kegagalan EC2, maka Anda menginginkan lebih banyak server EC2.

Sekitar November 2017, AWS menambahkan ECS Fargate . Sekarang Cluster dapat menjalankan "tanpa server" tanpa menyediakan node EC2. Anda cukup menentukan jumlah CPU dan memori yang diperlukan Tugas atau Layanan Anda untuk beroperasi, artinya Anda hanya membayar waktu CPU dan memori daripada EC2.

Alastair McCormack
sumber
2

Oke, seperti yang Anda ketahui EC2 adalah mesin virtual di AWS dan ECS adalah sistem orkestrasi container di AWS.

Untuk menggunakan ECS, Anda perlu menjalankan container Anda ke beberapa mesin virtual di mana EC2 adalah salah satu opsi untuk menyediakannya.

Anda perlu menginstal ecs-agentpada EC2 untuk membuat koneksi dengan ECS. Dan ECS juga dapat memantau penggunaan sumber daya di EC2 Anda. Jadi pada dasarnya Anda memilih jenis EC2 yang lebih tinggi, maka lebih banyak sumber daya (CPU / MEM) yang dapat digunakan penampung Anda.

David Hsu
sumber
0

Perbedaan utamanya adalah Instans Fargate yang disediakan ECS.

hongdeshuai
sumber