Sự khác biệt giữa Amazon ECS và Amazon EC2 là gì?


127

Tôi chỉ mới bắt đầu sử dụng AWS EC2. Tôi hiểu rằng EC2 giống như một chiếc máy tính từ xa, nơi tôi có thể làm mọi thứ mình muốn. Sau đó, tôi tìm hiểu về ECS. Tôi biết nó sử dụng Docker, nhưng tôi bối rối về mối quan hệ giữa hai điều này.

ECS có phải chỉ là một cài đặt Docker trong EC2 không? Nếu tôi đã có EC2 và tôi bắt đầu một ECS, điều đó có nghĩa là tôi có hai phiên bản?

Câu trả lời:


169

Câu hỏi của bạn

ECS có phải chỉ là một trình cài đặt docker trong EC2 không? Nếu tôi đã có EC2, sau đó tôi bắt đầu một ECS, điều đó có nghĩa là tôi có hai phiên bản?

Số AWS ECSchỉ là một nhóm hợp lý (cluster) của EC2trường, và tất cả các EC2trường hợp một phần của ECShành động như Dockerchủ nghĩa ECS có thể gửi lệnh để khởi động một container trên chúng ( EC2). Nếu bạn đã có EC2 và sau đó khởi chạy ECS, bạn sẽ vẫn có một phiên bản duy nhất. Nếu bạn thêm / đăng ký (bằng cách cài đặt AWS ECS Container Agent) EC2 vào ECS thì EC2 sẽ trở thành một phần của cụm, nhưng vẫn là một phiên bản duy nhất của EC2.

Amazon ECS mà không có bất kỳ EC2 nào được đăng ký (được thêm vào cụm) chẳng ích lợi gì.


TL; DR

Một cái nhìn tổng quan

  • EC2 - chỉ đơn giản là một máy từ xa (ảo).
  • ECSlà viết tắt của Elastic Container Service- theo định nghĩa cơ bản của cụm máy tính , ECSvề cơ bản là một nhóm hợp lý các EC2máy / cá thể . Nói về mặt kỹ thuật ECSlà một cấu hình đơn thuần để sử dụng và quản lý hiệu quả EC2 (các) tài nguyên cá thể của bạn , tức là bộ nhớ, bộ nhớ, CPU, v.v.

Để đơn giản hóa nó hơn nữa, nếu bạn đã khởi chạy một Amazon ECSmà không có EC2phiên bản nào được thêm vào nó, điều đó tốt cho việc không có gì tức là bạn không thể làm gì với nó. ECSchỉ có ý nghĩa khi một (hoặc nhiều) EC2trường hợp được thêm vào nó.

Điều khó hiểu tiếp theo ở đây là thuật ngữ vùng chứa - không phải là các trường hợp máy được ảo hóa hoàn toàn và Docker là một công nghệ chúng ta có thể sử dụng để tạo các trường hợp vùng chứa. Dockerlà một tiện ích bạn có thể cài đặt trên máy của chúng tôi, làm cho nó trở thành một Dockermáy chủ lưu trữ và trên máy chủ này, bạn có thể tạo các vùng chứa (giống như máy ảo - nhưng nhẹ hơn nhiều). Tóm lại, ECSchỉ là về việc phân cụm các cá thể EC2 và sử dụng Dockerđể khởi tạo vùng chứa / cá thể / máy ảo trên ( EC2) các máy chủ này .

Tất cả những gì bạn cần làm là khởi chạy một ECS, và đăng ký / thêm nhiều EC2phiên bản vào nó khi bạn cần. Bạn có thể thêm / đăng ký phiên bản EC2, tất cả những gì bạn cần là Amazon ECS Container Agent chạy trên phiên bản / máy EC2 của bạn, có thể được thực hiện thủ công hoặc trực tiếp bằng AMI đặc biệt (Amazon Machine Image) tức là AMI được Amazon ECS tối ưu hóa, đã có Đại lý vùng chứa Amazon ECS. Trong quá trình khởi chạy phiên bản EC2 mới, Agent sẽ tự động đăng ký nó vào cụm ECS mặc định.

Tác nhân vùng chứa đang chạy trên mỗi cá thể ( EC2instance) trong một Amazon ECScụm sẽ gửi thông tin về các tác vụ đang chạy hiện tại của cá thể và việc sử dụng tài nguyên tới Amazon ECS, đồng thời bắt đầu và dừng các tác vụ bất cứ khi nào nó nhận được yêu cầu từ Amazon ECS. Để biết thêm thông tin, hãy xem Đại lý vùng chứa Amazon ECS . Sau khi được thiết lập, mỗi cá thể vùng chứa đã tạo (của bất kỳ EC2máy / nút nào) sẽ là một cá thể trong Amazon ECSbầy của.


Để biết thêm thông tin - hãy đọc bước 10 từ tài liệu này: Khởi chạy Phiên bản vùng chứa Amazon ECS :

Chọn một AMI cho phiên bản vùng chứa của bạn. Bạn có thể chọn AMI được Amazon ECS tối ưu hóa hoặc hệ điều hành khác, chẳng hạn như CoreOS hoặc Ubuntu. Nếu bạn không chọn AMI được tối ưu hóa cho Amazon ECS, bạn cần làm theo các quy trình trong Cài đặt Đại lý vùng chứa Amazon ECS .

Theo mặc định, phiên bản vùng chứa của bạn sẽ khởi chạy vào cụm mặc định của bạn. Nếu bạn muốn khởi chạy vào cụm của riêng mình thay vì mặc định, hãy chọn danh sách Chi tiết Nâng cao và dán tập lệnh sau vào trường Dữ liệu người dùng, thay thế your_cluster_name bằng tên của cụm của bạn.

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

Hoặc, nếu bạn có tệp ecs.config trong Amazon S3 và đã bật quyền truy cập chỉ đọc của Amazon S3 vào vai trò phiên bản vùng chứa của bạn, hãy chọn danh sách Chi tiết nâng cao và dán tập lệnh sau vào trường Dữ liệu người dùng, thay thế your_bucket_name bằng tên của nhóm của bạn để cài đặt AWS CLI và ghi tệp cấu hình của bạn vào thời điểm khởi chạy. Lưu ý Để biết thêm thông tin về cấu hình này, hãy xem Lưu trữ cấu hình phiên bản vùng chứa trong Amazon S3.

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

Chỉ để làm rõ thêm - bạn có thể tạo vùng chứa trên phiên bản duy nhất của mình EC2mà không cần ECS. Cài đặt bất kỳ công nghệ chứa nào, tức là Dockervà chạy lệnh tạo vùng chứa, đặt bạn EC2làm Dockermáy chủ lưu trữ và có nhiều vùng Dockerchứa như bạn muốn (hoặc nhiều như EC2tài nguyên của bạn cho phép).


8
ECS không phải là viết tắt của Dịch vụ thùng chứa co giãn?
lfk

1
Cần lưu ý rằng câu trả lời này bây giờ là đáng kể trong ngày với sự ra mắt của AWS Fargate vào đầu năm 2018 (chạy ECS): aws.amazon.com/fargate
bsplosion

77

Nói một cách đơn giản, ECS là một người quản lý trong khi các trường hợp EC2 giống như nhân viên. Tất cả các nhân viên (EC2) dưới quyền người quản lý này (ECS) có thể thực hiện các nhiệm vụ "Docker" và người quản lý cũng hiểu khá rõ về "docker". Vì vậy, bất cứ khi nào bạn cần tài nguyên "docker", bạn sẽ hiển thị với Người quản lý. Người quản lý đã có trạng thái từ mọi nhân viên (EC2) quyết định nhân viên nào sẽ thực hiện nhiệm vụ.

Bây giờ, trở lại câu hỏi của bạn, một người quản lý mà không có "nhân viên" thì không có ý nghĩa.

nhập mô tả hình ảnh ở đây


Giải thích rất hay. Hơn bạn!
Matley

Chà, bạn có thể có các phiên bản EC2 mà không cần ECS nhưng đó sẽ chỉ giống như một cỗ máy tàn bạo đơn giản.
Lea Reimann

31

EC2 cho phép bạn khởi chạy các phiên bản riêng lẻ mà bạn có thể sử dụng cho hầu hết mọi thứ bạn thích. ECS là một dịch vụ vùng chứa, có nghĩa là nó sẽ khởi chạy các phiên bản sẵn sàng khởi chạy các ứng dụng vùng chứa. Sự khác biệt chính giữa hai dịch vụ là với EC2, bạn phải quản lý từng phiên bản riêng biệt theo bất kỳ phương pháp nào bạn chọn (thủ công, sử dụng công cụ CM hoặc bất kỳ cách nào khác) - triển khai các ứng dụng của bạn và tự duy trì kết nối giữa các máy chủ. ECS cho phép bạn khởi chạy một nhóm máy sẽ đóng vai trò là nền tảng triển khai của các ứng dụng vùng chứa của bạn, cho phép bạn coi tất cả các bản sao trong cụm là một bản sao lớn có sẵn cho khối lượng công việc vùng chứa của bạn.

Và để trả lời câu hỏi của bạn - Bạn có thể bắt đầu một cụm ECS mà không có phiên bản nào trong đó, nhưng sau đó nó sẽ không thể chạy bất cứ thứ gì trên đó. Khi bạn đăng ký một cá thể EC2 bên trong một cụm ECS, các vùng chứa đã sẵn sàng để chạy trong đó. Vì vậy, điểm mấu chốt là - bạn có thể sử dụng cả ECS và EC2 chỉ với một phiên bản, nhưng đó không phải là trường hợp sử dụng thực tế mà các dịch vụ này được xây dựng.


3

Nói một cách đơn giản, Elastic Container Service (ECS) là một dịch vụ điều phối vùng chứa Docker.

Bạn có thể yêu cầu nó chạy một hoặc nhiều hình ảnh Docker, dưới dạng " Dịch vụ " có khả năng tự động điều chỉnh tỷ lệ hoặc dưới dạng " Tác vụ " đặc biệt .

Các dịch vụ và tác vụ chạy trên một " Cluster ". Ban đầu, một Cụm là một nhóm gồm một hoặc nhiều máy chủ EC2 được cấu hình sẵn chạy ECS Cluster Agent. Tác nhân Cụm sẽ lên lịch các vùng chứa trên máy chủ EC2. Các máy chủ EC2 này hiển thị trong danh sách Phiên bản EC2 của bạn và được tính phí EC2 mỗi phút thông thường - Bạn thậm chí có thể SSH trên chúng như bất kỳ máy chủ EC2 thông thường nào. Nếu bạn muốn có thêm dung lượng để chạy nhiều Dịch vụ hoặc Công việc hơn hoặc nếu bạn muốn có khả năng phục hồi chống lại lỗi EC2, thì bạn sẽ có nhiều máy chủ EC2 hơn.

Vào khoảng tháng 11 năm 2017, AWS đã thêm ECS Fargate . Giờ đây, một Cụm có thể chạy "serverless" mà không cần cung cấp các nút EC2. Bạn chỉ cần xác định số lượng CPU và bộ nhớ mà Tác vụ hoặc Dịch vụ của bạn yêu cầu để hoạt động, có nghĩa là bạn chỉ trả tiền cho thời gian CPU và bộ nhớ thay vì EC2.


2

Được rồi, như bạn đã biết EC2 là một máy ảo trên AWS và ECS là một hệ thống điều phối vùng chứa trên AWS.

Để sử dụng ECS, bạn cần chạy vùng chứa của mình vào một số máy ảo mà EC2 là một trong những tùy chọn để cung cấp điều đó.

Bạn sẽ cần cài đặt ecs-agenttrên EC2 để tạo kết nối với ECS. Và ECS cũng có thể giám sát việc sử dụng tài nguyên trên EC2 của bạn. Vì vậy, về cơ bản bạn chọn loại EC2 cấp cao hơn, khi đó vùng chứa của bạn có thể sử dụng nhiều tài nguyên hơn (CPU / MEM).


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.