อะไรคือความแตกต่างระหว่าง 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.