Amazon ECS와 Amazon EC2의 차이점은 무엇입니까?


127

이제 막 AWS EC2를 시작하고 있습니다. EC2는 내가 원하는 모든 것을 할 수있는 원격 컴퓨터와 같다는 것을 이해합니다. 그런 다음 ECS에 대해 알게되었습니다. Docker를 사용한다는 것을 알고 있지만이 둘의 관계에 대해 혼란 스럽습니다.

ECS는 EC2에 Docker 설치 일 뿐입니 까? 이미 EC2가 있고 ECS를 시작하면 두 개의 인스턴스가 있다는 의미입니까?

답변:


169

귀하의 질문

ECS는 단지 EC2에 Docker 설치입니까? 이미 EC2가있는 경우 ECS를 시작하면 두 개의 인스턴스가 있다는 의미입니까?

아니요. 인스턴스 AWS ECS의 논리적 그룹 (클러스터) 일 뿐이며 호스트 의 EC2모든 EC2인스턴스 부분이 호스트 ECS역할을 Docker합니다. 즉, ECS가 명령을 보내 컨테이너를 시작할 수 있습니다 ( EC2). 이미 EC2가 있고 ECS를 시작하는 경우에도 단일 인스턴스가 있습니다. AWS ECS Container Agent를 설치하여 EC2를 추가 / 등록하면 EC2가 클러스터의 일부가되지만 여전히 EC2의 단일 인스턴스가됩니다.

EC2가 등록되지 않은 Amazon ECS (클러스터에 추가됨)는 아무 소용이 없습니다.


TL; DR

개요

  • EC2 -단순히 원격 (가상) 머신입니다.
  • ECS의미 Elastic Container Service-의 기본 정의에 따라 컴퓨터 클러스터 , ECS기본적으로의 논리적 그룹입니다 EC2기계 / 인스턴스 . 기술적으로 말하면 인스턴스 리소스 (예 : 스토리지, 메모리, CPU 등)를 ECS효율적으로 사용하고 관리하기위한 단순한 구성입니다 EC2.

더 단순화하기 위해 인스턴스가 추가 Amazon ECS되지 않은 상태에서 EC2를 시작했다면 아무 일도하지 않는 것이 좋습니다. 즉, 그것에 대해 아무것도 할 수 없습니다. ECS하나 이상의 EC2인스턴스가 추가 된 경우 에만 의미 가 있습니다.

다음으로 혼란스러운 것은 컨테이너 용어입니다. 이는 완전히 가상화 된 머신 인스턴스가 아니며 Docker 는 컨테이너 인스턴스를 만드는 데 사용할 수있는 기술 중 하나입니다. Docker는 컴퓨터에 설치할 수있는 유틸리티로, Docker호스트가되고,이 호스트에서 컨테이너를 만들 수 있습니다 (가상 머신과 동일하지만 훨씬 더 가볍습니다). 요약하면 ECS은 EC2 인스턴스의 클러스터링에 관한 것이며 Docker이러한 ( EC2) 호스트 에서 컨테이너 / 인스턴스 / 가상 머신을 인스턴스화하는 데 사용 됩니다 .

을 (를) 시작하고 필요한 ECS만큼 EC2인스턴스를 등록 / 추가 하기 만하면됩니다. EC2 인스턴스를 추가 / 등록 할 수 있습니다. 필요한 것은 EC2 인스턴스 / 머신에서 실행되는 Amazon ECS 컨테이너 에이전트입니다.이 에이전트는 수동 또는 특수 AMI (Amazon 머신 이미지), 즉 Amazon ECS 최적화 AMI를 사용하여 직접 수행 할 수 있습니다. Amazon ECS 컨테이너 에이전트. 새 EC2 인스턴스를 시작하는 동안 에이전트는이를 기본 ECS 클러스터에 자동으로 등록합니다.

클러스터 내의 각 인스턴스 ( 인스턴스)에서 실행 되는 컨테이너 에이전트 는 인스턴스의 현재 실행중인 작업 및 리소스 사용률에 대한 정보를 Amazon ECS로 전송하고 Amazon ECS에서 요청을받을 때마다 작업을 시작 및 중지합니다. 자세한 내용은 Amazon ECS 컨테이너 에이전트를 참조하십시오 . 일단 설정되면 생성 된 각 컨테이너 인스턴스 (모든 머신 / 노드의)는 의 떼 의 인스턴스가됩니다 .EC2Amazon ECSEC2Amazon ECS


자세한 내용은이 설명서의 10 단계를 읽으십시오 . Amazon ECS 컨테이너 인스턴스 시작 :

컨테이너 인스턴스에 대한 AMI를 선택합니다. Amazon ECS 최적화 AMI 또는 CoreOS 또는 Ubuntu와 같은 다른 운영 체제를 선택할 수 있습니다. Amazon ECS 최적화 AMI를 선택하지 않는 경우 Amazon ECS 컨테이너 에이전트 설치의 절차를 따라야합니다 .

기본적으로 컨테이너 인스턴스는 기본 클러스터로 시작됩니다. 기본값 대신 자체 클러스터로 시작하려면 고급 세부 정보 목록을 선택하고 다음 스크립트를 사용자 데이터 필드에 붙여넣고 your_cluster_name을 클러스터 이름으로 바꿉니다.

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

또는 Amazon S3에 ecs.config 파일이 있고 컨테이너 인스턴스 역할에 대한 Amazon S3 읽기 전용 액세스를 활성화 한 경우 고급 세부 정보 목록을 선택하고 다음 스크립트를 사용자 데이터 필드에 붙여넣고 your_bucket_name을 다음 이름으로 바꿉니다. 버킷을 사용하여 AWS CLI를 설치하고 시작시 구성 파일을 작성합니다. Note이 구성에 대한 자세한 내용은 Amazon S3에 컨테이너 인스턴스 구성 저장을 참조하십시오.

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

좀 더 명확히하기 위해 .NET EC2없이 단일 인스턴스 에 컨테이너를 만들 수 있습니다 ECS. 컨테이너화 기술 중 하나를 설치 Docker하고 create container 명령을 실행하여 호스트 EC2로 설정 하고 원하는만큼 (또는 리소스가 허용 Docker하는만큼) Docker컨테이너를 보유합니다 EC2.


8
ECS는 Elastic Container Service를 의미하지 않습니까?
LFK

1
이 답변은 2018 년 초 (ECS 실행)에 AWS Fargate가 출시되면서 상당히 오래되었습니다. aws.amazon.com/fargate
bsplosion

77

간단히 말해 ECS는 관리자이고 EC2 인스턴스는 직원과 같습니다. 이 관리자 (ECS) 아래의 모든 직원 (EC2)은 "Docker"작업을 수행 할 수 있으며 관리자도 "Docker"를 잘 이해합니다. 따라서 "도커"리소스가 필요할 때마다 관리자에게 표시됩니다. 관리자는 이미 모든 직원의 상태 (EC2)가 작업을 수행 할 사람을 결정합니다.

이제 질문으로 돌아가서 "직원"이없는 관리자는 말이되지 않습니다.

여기에 이미지 설명 입력


아주 좋은 설명입니다. 당신보다!
Matley

ECS없이 EC2 인스턴스를 가질 수 있지만 이는 단순한 가상 머신과 같습니다.
Lea Reimann

31

EC2를 사용하면 원하는대로 거의 사용할 수있는 개별 인스턴스를 시작할 수 있습니다. ECS는 컨테이너 서비스입니다. 즉, 컨테이너 애플리케이션을 시작할 준비가 된 인스턴스를 시작합니다. 두 서비스의 주요 차이점은 EC2를 사용하면 선택한 방법 (수동, CM 도구 또는 다른 방법 사용)으로 각 인스턴스를 개별적으로 관리해야한다는 것입니다. 애플리케이션을 배포하고 서버 간의 연결을 직접 유지해야합니다. ECS를 사용하면 컨테이너 앱의 배포 기반 역할을 할 머신 클러스터를 시작할 수 있으므로 클러스터의 모든 인스턴스를 컨테이너 워크로드에 사용할 수있는 하나의 큰 인스턴스로 처리 할 수 ​​있습니다.

그리고 질문에 답하기 위해-인스턴스가없는 ECS 클러스터를 시작할 수 있지만 그 후에는 아무것도 실행할 수 없습니다. ECS 클러스터 내에 EC2 인스턴스를 등록하면 컨테이너를 실행할 준비가 된 것입니다. 따라서 결론은 하나의 인스턴스에서만 ECS와 EC2를 모두 사용할 수 있지만 이는 이러한 서비스가 구축 된 실제 사용 사례가 아닙니다.


3

간단히 말해 Elastic Container Service (ECS)는 Docker 컨테이너 오케스트레이션 서비스입니다.

하나 이상의 Docker 이미지를 자동 확장 가능한 " 서비스 "또는 임시 " 작업 " 으로 실행하도록 요청할 수 있습니다 .

서비스 및 작업은 " 클러스터 " 에서 실행됩니다 . 원래 클러스터는 ECS Cluster Agent를 실행하는 사전 구성된 하나 이상의 EC2 서버 그룹이었습니다. Cluster Agent는 EC2 서버의 컨테이너를 예약합니다. 이러한 EC2 서버는 EC2 인스턴스 목록에 표시되며 분당 일반 EC2 비용으로 청구됩니다. 일반 EC2 서버와 마찬가지로 SSH에 접속할 수도 있습니다. 더 많은 서비스 또는 작업을 실행하기 위해 더 많은 용량을 원하거나 EC2 장애에 대한 복원력을 원하면 더 많은 EC2 서버가 필요합니다.

2017 년 11 월경 AWS는 ECS Fargate를 추가 했습니다 . 이제 클러스터는 EC2 노드를 프로비저닝하지 않고도 "서버리스"를 실행할 수 있습니다. 작업 또는 서비스가 작동하는 데 필요한 CPU 및 메모리 양을 정의하기 만하면됩니다. 즉, EC2가 아닌 CPU 및 메모리 시간에 대한 비용 만 지불하면됩니다.


2

알다시피 EC2는 AWS의 가상 머신이고 ECS는 AWS의 컨테이너 오케스트레이션 시스템입니다.

ECS를 사용하려면 EC2가 제공하는 옵션 중 하나 인 일부 가상 머신에서 컨테이너를 실행해야합니다.

ecs-agentECS와 연결 하려면 EC2 에 설치해야합니다 . 또한 ECS는 EC2의 리소스 사용량을 모니터링 할 수 있습니다. 따라서 기본적으로 더 높은 수준의 EC2 유형을 선택하면 컨테이너에서 더 많은 리소스 (CPU / MEM)를 사용할 수 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.