อะไรคือความแตกต่างระหว่าง Amazon ECS และ Amazon EC2?


127

ฉันเพิ่งเริ่มต้นใช้งาน AWS EC2 ฉันเข้าใจว่า EC2 เป็นเหมือนคอมพิวเตอร์ระยะไกลที่ฉันสามารถทำทุกอย่างที่ต้องการได้ จากนั้นฉันก็ค้นพบเกี่ยวกับ ECS ฉันรู้ว่ามันใช้ Docker แต่ฉันสับสนเกี่ยวกับความสัมพันธ์ระหว่างสองคนนี้

ECS เป็นเพียง Docker ที่ติดตั้งใน EC2 หรือไม่? หากฉันมี EC2 อยู่แล้วและฉันเริ่ม ECS หมายความว่าฉันมีสองอินสแตนซ์หรือไม่

คำตอบ:


169

คำถามของคุณ

ECS เป็นเพียงนักเทียบท่าที่ติดตั้งใน EC2 หรือไม่? หากฉันมี EC2 อยู่แล้วฉันเริ่ม ECS หมายความว่าฉันมีสองอินสแตนซ์หรือไม่

ไม่ใช่AWS ECSเป็นเพียงการจัดกลุ่มเชิงตรรกะ (คลัสเตอร์) ของEC2อินสแตนซ์และอินสแตนซ์ทั้งหมดที่เป็นEC2ส่วนหนึ่งของการECSกระทำในฐานะDockerโฮสต์เช่น ECS สามารถส่งคำสั่งเพื่อเรียกใช้คอนเทนเนอร์บนอินสแตนซ์( EC2) หากคุณมี EC2 แล้วเปิดใช้ ECS คุณจะยังมีอินสแตนซ์เดียว หากคุณเพิ่ม / ลงทะเบียน (โดยการติดตั้ง AWS ECS Container Agent) EC2 ไปยัง ECS จะกลายเป็นส่วนหนึ่งของคลัสเตอร์ แต่ยังคงเป็นอินสแตนซ์เดียวของ EC2

Amazon ECS ที่ไม่มีการลงทะเบียน EC2 (เพิ่มลงในคลัสเตอร์) นั้นไม่มีประโยชน์อะไรเลย


TL; DR

ภาพรวม

  • EC2 - เป็นเพียงเครื่องระยะไกล (เสมือน)
  • ECSย่อมาจากElastic Container Service- ราคาตามความหมายพื้นฐานของคอมพิวเตอร์คลัสเตอร์ , ECSเป็นพื้นกลุ่มตรรกะของ EC2เครื่องจักร / อินสแตนซ์ ในทางเทคนิคECSเป็นเพียงการกำหนดค่าสำหรับการใช้งานและการจัดการทรัพยากรEC2 อินสแตนซ์ของคุณอย่างมีประสิทธิภาพเช่นพื้นที่จัดเก็บหน่วยความจำ CPU เป็นต้น

เพื่อให้ง่ายขึ้นหากคุณได้เปิดตัวAmazon ECSโดยไม่มีEC2อินสแตนซ์เพิ่มเข้ามาก็เป็นการดีที่จะไม่ทำอะไรเลยเช่นคุณไม่สามารถทำอะไรกับมันได้ ECSมีเหตุผลเพียงครั้งเดียวที่เพิ่มEC2อินสแตนซ์หนึ่ง (หรือมากกว่า) เข้าไป

สิ่งที่ทำให้สับสนต่อไปในที่นี้คือคำว่าcontainerซึ่งไม่ใช่อินสแตนซ์ของเครื่องเสมือนจริงและDockerเป็นเทคโนโลยีหนึ่งที่เราสามารถใช้สร้างอินสแตนซ์คอนเทนเนอร์ Dockerเป็นยูทิลิตี้ที่คุณสามารถติดตั้งบนเครื่องของเราซึ่งทำให้เป็นDockerโฮสต์และบนโฮสต์นี้คุณสามารถสร้างคอนเทนเนอร์ได้ (เช่นเดียวกับเครื่องเสมือน - แต่มีน้ำหนักเบากว่ามาก) เพื่อสรุปECSเป็นเพียงเกี่ยวกับการจัดกลุ่มของ EC2 กรณีและการใช้Dockerภาชนะ instantiate / กรณี / เครื่องเสมือนบนเหล่านี้ ( EC2) เจ้าภาพ

สิ่งที่คุณต้องทำคือเปิดECSและลงทะเบียน / เพิ่มEC2อินสแตนซ์ให้มากที่สุดเท่าที่คุณต้องการ คุณสามารถเพิ่ม / ลงทะเบียนอินสแตนซ์ EC2 สิ่งที่คุณต้องมีคือ Amazon ECS Container Agent ที่ทำงานบนอินสแตนซ์ / เครื่อง EC2 ของคุณซึ่งสามารถทำได้ด้วยตนเองหรือโดยตรงโดยใช้ AMI พิเศษ (Amazon Machine Image) เช่น AMI ที่ปรับให้เหมาะสมกับ Amazon ECS ซึ่งมีอยู่แล้ว Amazon ECS Container Agent ในระหว่างการเปิดตัวอินสแตนซ์ EC2 ใหม่ Agent จะลงทะเบียนโดยอัตโนมัติกับคลัสเตอร์ ECS เริ่มต้น

ตัวแทนภาชนะทำงานในแต่ละกรณี ( EC2อินสแตนซ์) ภายในAmazon ECSคลัสเตอร์ส่งข้อมูลเกี่ยวกับงานเช่นในปัจจุบันการทำงานและการใช้ทรัพยากรที่ Amazon ECS และเริ่มต้นและหยุดงานเมื่อใดก็ตามที่ได้รับการร้องขอจาก Amazon ECS สำหรับข้อมูลเพิ่มเติมโปรดดูที่Amazon ECS ตัวแทนคอนเทนเนอร์ เมื่อตั้งค่าแล้วแต่ละอินสแตนซ์คอนเทนเนอร์ที่สร้างขึ้น (ของEC2เครื่อง / โหนดใด ๆ ก็ตาม) จะเป็นอินสแตนซ์ในAmazon ECSฝูง


สำหรับข้อมูลเพิ่มเติมโปรดอ่านขั้นตอนที่ 10 จากเอกสารนี้: การเปิดใช้งาน Amazon ECS Container Instance :

เลือก AMI สำหรับอินสแตนซ์คอนเทนเนอร์ของคุณ คุณสามารถเลือก AMI ที่ปรับให้เหมาะสมกับ Amazon ECS หรือระบบปฏิบัติการอื่นเช่น CoreOS หรือ Ubuntu หากคุณไม่ได้เลือก Amazon ECS เพิ่มประสิทธิภาพ AMI คุณจะต้องปฏิบัติตามขั้นตอนในการติดตั้ง Amazon ECS ตัวแทนคอนเทนเนอร์

ตามค่าเริ่มต้นอินสแตนซ์คอนเทนเนอร์ของคุณจะเปิดใช้ในคลัสเตอร์เริ่มต้นของคุณ หากคุณต้องการเปิดใช้งานในคลัสเตอร์ของคุณเองแทนที่จะเป็นค่าดีฟอลต์ให้เลือกรายการ Advanced Details และวางสคริปต์ต่อไปนี้ลงในฟิลด์ User data โดยแทนที่ your_cluster_name ด้วยชื่อคลัสเตอร์ของคุณ

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

หรือถ้าคุณมีไฟล์ ecs.config ใน Amazon S3 และเปิดใช้งานการเข้าถึง Amazon S3 แบบอ่านอย่างเดียวสำหรับบทบาทอินสแตนซ์คอนเทนเนอร์ของคุณให้เลือกรายการรายละเอียดขั้นสูงและวางสคริปต์ต่อไปนี้ลงในฟิลด์ข้อมูลผู้ใช้แทนที่ your_bucket_name ด้วยชื่อของ ที่เก็บข้อมูลของคุณเพื่อติดตั้ง AWS CLI และเขียนไฟล์การกำหนดค่าของคุณในเวลาเปิดตัว หมายเหตุสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่านี้โปรดดูการจัดเก็บการกำหนดค่าอินสแตนซ์คอนเทนเนอร์ใน Amazon S3

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

เพียงชี้แจงมันต่อไป - คุณสามารถสร้างภาชนะเดียวของคุณตัวอย่างเช่นโดยไม่ต้องEC2 ECSติดตั้งเทคโนโลยี containerization ใด ๆ เช่นDockerและเรียกใช้คำสั่ง create container ตั้งค่าของคุณEC2เป็นDockerโฮสต์และมีDockerคอนเทนเนอร์มากเท่าที่คุณต้องการ (หรือเท่าที่EC2ทรัพยากรของคุณอนุญาต)


8
ECS ไม่รองรับ Elastic Container Service ใช่หรือไม่
lfk

1
ควรสังเกตว่าคำตอบนี้ล้าสมัยไปแล้วอย่างมากกับการเปิดตัว AWS Fargate ในต้นปี 2018 (ซึ่งรัน ECS): aws.amazon.com/fargate
bsplosion

77

พูดง่ายๆ ECS เป็นผู้จัดการในขณะที่อินสแตนซ์ EC2 ก็เหมือนกับพนักงาน พนักงานทุกคน (EC2) ภายใต้ผู้จัดการนี้ (ECS) สามารถทำงาน "Docker" ได้และผู้จัดการก็เข้าใจ "นักเทียบท่า" ได้เป็นอย่างดี ดังนั้นเมื่อใดก็ตามที่คุณต้องการทรัพยากร "นักเทียบท่า" คุณจะแสดงต่อผู้จัดการ ผู้จัดการมีสถานะจากพนักงานทุกคนอยู่แล้ว (EC2) เป็นผู้ตัดสินใจว่าควรปฏิบัติงานใด

ตอนนี้กลับมาที่คำถามของคุณผู้จัดการที่ไม่มี "พนักงาน" ไม่สมเหตุสมผล

ใส่คำอธิบายภาพที่นี่


คำอธิบายที่ดีมาก กว่าที่คุณ!
Matley

คุณสามารถมีอินสแตนซ์ EC2 ได้โดยไม่ต้องใช้ ECS แต่นั่นก็เหมือนกับเครื่องที่มีความรุนแรง
Lea Reimann

31

EC2 ช่วยให้คุณสามารถเปิดใช้งานแต่ละอินสแตนซ์ซึ่งคุณสามารถใช้กับอะไรก็ได้ที่คุณต้องการ ECS เป็นบริการคอนเทนเนอร์ซึ่งหมายความว่าจะเปิดอินสแตนซ์ที่พร้อมจะเปิดแอปพลิเคชันคอนเทนเนอร์ ความแตกต่างหลักระหว่างบริการทั้งสองคือเมื่อใช้ EC2 คุณจะต้องจัดการแต่ละอินสแตนซ์แยกกันไม่ว่าคุณจะเลือกวิธีใด (ด้วยตนเองโดยใช้เครื่องมือ CM หรือวิธีอื่นใด) - ปรับใช้แอปพลิเคชันของคุณและรักษาการเชื่อมต่อระหว่างเซิร์ฟเวอร์ด้วยตนเอง ECS ช่วยให้คุณสามารถเรียกใช้คลัสเตอร์ของเครื่องจักรที่จะทำหน้าที่เป็นฐานการปรับใช้ของแอพคอนเทนเนอร์ของคุณทำให้คุณสามารถจัดการอินสแตนซ์ทั้งหมดในคลัสเตอร์เป็นอินสแตนซ์ขนาดใหญ่เพียงอินสแตนซ์เดียวที่พร้อมใช้งานสำหรับปริมาณงานคอนเทนเนอร์ของคุณ

และเพื่อตอบคำถามของคุณ - คุณสามารถเริ่มคลัสเตอร์ ECS โดยไม่มีอินสแตนซ์อยู่ในนั้น แต่จะไม่สามารถเรียกใช้อะไรได้เลย เมื่อคุณลงทะเบียนอินสแตนซ์ EC2 ภายในคลัสเตอร์ ECS คอนเทนเนอร์ก็พร้อมที่จะทำงานในนั้น ดังนั้นสิ่งที่สำคัญที่สุดคือ - คุณสามารถใช้ทั้ง ECS และ EC2 ด้วยอินสแตนซ์เดียวเท่านั้น แต่นั่นไม่ใช่กรณีการใช้งานจริงที่บริการเหล่านี้สร้างขึ้นสำหรับ


3

พูดง่ายๆก็คือ Elastic Container Service (ECS) คือบริการจัดระเบียบคอนเทนเนอร์ Docker

คุณสามารถขอให้ทำงานอย่างใดอย่างหนึ่งหรือมากกว่าภาพเทียบท่าไม่ว่าจะเป็นอัตโนมัติปรับความสามารถ " บริการ " หรือเป็น Ad-hoc " งาน "

บริการและงานทำงานบน " คลัสเตอร์ " เดิมคลัสเตอร์คือกลุ่มของเซิร์ฟเวอร์ EC2 ที่กำหนดค่าไว้ล่วงหน้าอย่างน้อยหนึ่งเซิร์ฟเวอร์ที่เรียกใช้ ECS Cluster Agent Cluster Agent จะจัดกำหนดการคอนเทนเนอร์บนเซิร์ฟเวอร์ EC2 เซิร์ฟเวอร์ EC2 เหล่านี้แสดงในรายการอินสแตนซ์ EC2 ของคุณและจะถูกเรียกเก็บเงินตามค่าใช้จ่าย EC2 ปกติต่อนาที - คุณยังสามารถ SSH ไปยังเซิร์ฟเวอร์เหล่านี้ได้เช่นเดียวกับเซิร์ฟเวอร์ EC2 ทั่วไป หากคุณต้องการความจุมากขึ้นในการเรียกใช้บริการหรืองานเพิ่มเติมหรือหากคุณต้องการความยืดหยุ่นต่อความล้มเหลวของ EC2 คุณก็ต้องการเซิร์ฟเวอร์ EC2 มากขึ้น

ประมาณเดือนพฤศจิกายน 2017, AWS เพิ่ม ECS Fargate ตอนนี้คลัสเตอร์สามารถรัน "ไร้เซิร์ฟเวอร์" ได้โดยไม่ต้องจัดเตรียมโหนด EC2 คุณเพียงแค่กำหนดจำนวน CPU และหน่วยความจำที่งานหรือบริการของคุณต้องใช้ในการทำงานซึ่งหมายความว่าคุณเพียงแค่จ่ายค่า CPU และเวลาหน่วยความจำแทนที่จะเป็น EC2


2

เอาล่ะอย่างที่คุณทราบ EC2 เป็นเครื่องเสมือนบน AWS และ ECS เป็นระบบการจัดระเบียบคอนเทนเนอร์บน AWS

ในการใช้ ECS คุณต้องเรียกใช้คอนเทนเนอร์ของคุณในเครื่องเสมือนซึ่ง EC2 เป็นหนึ่งในตัวเลือกในการจัดหาสิ่งนั้น

คุณจะต้องติดตั้งecs-agentบน EC2 เพื่อทำการเชื่อมต่อกับ ECS และ ECS ยังสามารถตรวจสอบการใช้ทรัพยากรบน EC2 ของคุณ โดยพื้นฐานแล้วคุณจะเลือกประเภท EC2 ระดับสูงมากขึ้นจากนั้นทรัพยากรเพิ่มเติม (CPU / MEM) ที่คอนเทนเนอร์ของคุณสามารถใช้ได้


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.