이제 막 AWS EC2를 시작하고 있습니다. EC2는 내가 원하는 모든 것을 할 수있는 원격 컴퓨터와 같다는 것을 이해합니다. 그런 다음 ECS에 대해 알게되었습니다. Docker를 사용한다는 것을 알고 있지만이 둘의 관계에 대해 혼란 스럽습니다.
ECS는 EC2에 Docker 설치 일 뿐입니 까? 이미 EC2가 있고 ECS를 시작하면 두 개의 인스턴스가 있다는 의미입니까?
이제 막 AWS EC2를 시작하고 있습니다. EC2는 내가 원하는 모든 것을 할 수있는 원격 컴퓨터와 같다는 것을 이해합니다. 그런 다음 ECS에 대해 알게되었습니다. Docker를 사용한다는 것을 알고 있지만이 둘의 관계에 대해 혼란 스럽습니다.
ECS는 EC2에 Docker 설치 일 뿐입니 까? 이미 EC2가 있고 ECS를 시작하면 두 개의 인스턴스가 있다는 의미입니까?
답변:
귀하의 질문
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 컨테이너 에이전트를 참조하십시오 . 일단 설정되면 생성 된 각 컨테이너 인스턴스 (모든 머신 / 노드의)는 의 떼 의 인스턴스가됩니다 .EC2
Amazon ECS
EC2
Amazon 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
.
간단히 말해 ECS는 관리자이고 EC2 인스턴스는 직원과 같습니다. 이 관리자 (ECS) 아래의 모든 직원 (EC2)은 "Docker"작업을 수행 할 수 있으며 관리자도 "Docker"를 잘 이해합니다. 따라서 "도커"리소스가 필요할 때마다 관리자에게 표시됩니다. 관리자는 이미 모든 직원의 상태 (EC2)가 작업을 수행 할 사람을 결정합니다.
이제 질문으로 돌아가서 "직원"이없는 관리자는 말이되지 않습니다.
EC2를 사용하면 원하는대로 거의 사용할 수있는 개별 인스턴스를 시작할 수 있습니다. ECS는 컨테이너 서비스입니다. 즉, 컨테이너 애플리케이션을 시작할 준비가 된 인스턴스를 시작합니다. 두 서비스의 주요 차이점은 EC2를 사용하면 선택한 방법 (수동, CM 도구 또는 다른 방법 사용)으로 각 인스턴스를 개별적으로 관리해야한다는 것입니다. 애플리케이션을 배포하고 서버 간의 연결을 직접 유지해야합니다. ECS를 사용하면 컨테이너 앱의 배포 기반 역할을 할 머신 클러스터를 시작할 수 있으므로 클러스터의 모든 인스턴스를 컨테이너 워크로드에 사용할 수있는 하나의 큰 인스턴스로 처리 할 수 있습니다.
그리고 질문에 답하기 위해-인스턴스가없는 ECS 클러스터를 시작할 수 있지만 그 후에는 아무것도 실행할 수 없습니다. ECS 클러스터 내에 EC2 인스턴스를 등록하면 컨테이너를 실행할 준비가 된 것입니다. 따라서 결론은 하나의 인스턴스에서만 ECS와 EC2를 모두 사용할 수 있지만 이는 이러한 서비스가 구축 된 실제 사용 사례가 아닙니다.
간단히 말해 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 및 메모리 시간에 대한 비용 만 지불하면됩니다.