Amazon ECS 관리형 인스턴스에 대한 아키텍트
Amazon ECS 관리형 인스턴스는 AWS로 인프라 관리를 오프로드하면서 다양한 Amazon EC2 인스턴스 유형에서 컨테이너화된 워크로드를 실행할 수 있는 Amazon ECS용 완전관리형 컴퓨팅 옵션입니다. Amazon ECS 관리형 인스턴스를 사용하면 GPU 가속화, 특정 CPU 아키텍처, 뛰어난 네트워크 성능 및 특수 인스턴스 유형과 같은 특정 컴퓨팅 기능에 액세스할 수 있으며 이와 동시에 AWS는 기본 인프라의 프로비저닝, 규모 조정, 패치 적용 및 유지 관리를 처리합니다.
Amazon ECS 관리형 인스턴스를 사용하는 경우 애플리케이션을 컨테이너에 패키징하고 컴퓨팅 요구 사항을 지정합니다. AWS는 워크로드 요구 사항을 충족하는 가장 비용 최적화된 범용 Amazon EC2 인스턴스 유형을 자동으로 선택하거나 인스턴스 유형, CPU 제조업체 및 액셀러레이터를 포함하여 원하는 인스턴스 속성을 지정할 수 있습니다. Amazon ECS 관리형 인스턴스는 AWS 기능 및 Amazon EC2 통합에 대한 액세스를 중단하지 않고도 규모 조정, 패치 적용, 비용 최적화를 비롯한 인프라의 모든 측면을 완벽하게 관리합니다.
Amazon ECS 관리형 인스턴스는 플랫폼별 최적화 및 보안 구성을 갖춘 Linux 컨테이너를 지원합니다. 기본적으로 Amazon ECS 관리형 인스턴스는 더 큰 인스턴스에 더 작은 태스크를 여러 개 배치하여 인프라 사용률을 최적화하므로 비용을 절감하고 태스크 시작 시간을 개선할 수 있습니다.
이 주제에서는 Amazon ECS 관리형 인스턴스 태스크와 서비스의 다양한 구성 요소를 설명하고 Amazon ECS에 Amazon ECS 관리형 인스턴스를 사용하기 위한 특수한 고려 사항을 살펴봅니다.
시작하기
Amazon ECS 관리형 인스턴스를 시작하려면 필요한 IAM 역할을 생성하고 AWS 계정에서 Amazon ECS 관리형 인스턴스를 활성화합니다. 그런 다음 Amazon ECS 관리형 인스턴스 용량 공급자를 사용하여 용량 공급자를 생성하고 태스크 또는 서비스를 시작할 수 있습니다.
시작하는 방법에 관한 자세한 지침은 다음을 참조하세요.
용량 공급자
Amazon ECS 관리형 인스턴스는 용량 공급자를 사용하여 워크로드의 컴퓨팅 용량을 관리합니다. 기본 용량 공급자를 사용하거나 특정 인스턴스 요구 사항이 있는 사용자 지정 용량 공급자를 생성할 수 있습니다.
다음과 같은 용량 공급자 옵션을 사용할 수 있습니다.
-
기본 용량 공급자 - 워크로드 요구 사항에 가장 비용 최적화된 범용 인스턴스 유형을 자동으로 선택합니다.
-
사용자 지정 용량 공급자 - vCPU 수, 메모리, CPU 제조업체, 액셀러레이터 유형 및 특정 인스턴스 유형을 포함해 속성 기반 인스턴스 유형 선택을 사용하여 인스턴스 속성을 지정할 수 있습니다.
용량 공급자 전략에는 다음 목록의 용량 공급자 유형이 하나만 포함될 수 있습니다.
-
Amazon ECS 관리형 인스턴스
-
Amazon EC2 Auto Scaling 그룹
-
Fargate/Fargate_SPOT
인스턴스 선택 및 최적화
Amazon ECS는 다음 방법 중 하나를 사용하여 Amazon ECS 관리형 인스턴스 워크로드의 인스턴스 유형을 선택합니다.
-
자동 선택 - 기본 용량 공급자를 사용하는 경우 Amazon ECS는 태스크 정의에 지정된 CPU 및 메모리 요구 사항을 충족하는 가장 비용 최적화된 범용 인스턴스 유형을 자동으로 선택합니다.
-
속성 기반 선택 - 사용자 지정 용량 공급자를 사용하는 경우 vCPU 수, 메모리 크기, CPU 제조업체, 액셀러레이터 유형 및 특정 인스턴스 유형과 같은 인스턴스 속성을 지정할 수 있습니다. Amazon ECS는 지정된 속성과 일치하는 모든 인스턴스 유형 중에서 선택합니다.
Amazon ECS 관리형 인스턴스는 여러 메커니즘을 통해 인프라 사용률과 비용을 최적화합니다.
-
다중 태스크 배치 - 기본적으로 Amazon ECS는 더 큰 인스턴스에 더 작은 태스크를 여러 개 배치하여 사용률을 극대화하고 비용을 절감합니다.
-
활성 워크로드 통합 - Amazon ECS는 애플리케이션 가용성 또는 배포 성능에 영향을 미칠 수 있는 조기 종료를 방지하면서 컨테이너 인스턴스가 실제로 유휴 상태인 시기를 식별합니다. 시스템은 서비스에 대해 설정된 최소 및 최대 태스크 수, 중지 전 시작 동작 및 태스크 보호 동작을 준수합니다.
-
적정 규모 조정 - 워크로드 요구 사항이 변경되면 Amazon ECS는 현재 요구 사항에 적합한 크기의 대체 인스턴스를 시작합니다.
Amazon ECS는 Amazon EC2 이벤트 기간을 사용하여 원하는 기간에 유지 관리 활동을 예약합니다. 이벤트 기간을 사용하면 AWS가 인스턴스에 대한 유지 관리를 수행할 수 있는 반복 기간을 정의할 수 있으므로 유지 관리를 운영 일정에 맞게 조정하여 워크로드 중단을 최소화할 수 있습니다. 자세한 내용은 Amazon EC2 사용 설명서의 예약된 인스턴스 이벤트를 참조하세요.
강력한 격리가 필요한 경우 VM 수준 보안 격리 경계가 있는 별도의 인스턴스에서 각 태스크를 실행하도록 Amazon ECS 관리형 인스턴스를 구성할 수 있습니다.
태스크 정의
Amazon ECS 관리형 인스턴스를 사용하는 태스크는 대부분의 Amazon ECS 태스크 정의 파라미터를 지원합니다. Amazon ECS 관리형 인스턴스는 플랫폼 버전 1.4.0을 사용하는 기존 Fargate 태스크 정의와 호환되므로 마이그레이션이 간단합니다.
Amazon ECS 관리형 인스턴스를 사용하려면 MANAGED_INSTANCES를 포함하도록 requiresCompatibilities 태스크 정의 파라미터를 설정합니다. 태스크 정의에서는 배포 옵션의 유연성을 위해 Fargate 및 Amazon ECS 관리형 인스턴스 호환성을 모두 지정할 수 있습니다.
운영 체제 및 CPU 아키텍처
지원되는 운영 체제는 다음과 같습니다.
-
Bottlerocket
Amazon ECS 태스크 정의에는 ARM과 X86_64의 2가지 아키텍처를 사용할 수 있습니다.
Amazon ECS 관리형 인스턴스에서 Linux 컨테이너를 실행할 때 X86_64 CPU 아키텍처 또는 ARM 기반 애플리케이션용 ARM64 아키텍처를 사용할 수 있습니다.
주요 기능
Amazon ECS 관리형 인스턴스의 주요 기능은 다음과 같습니다.
-
애플리케이션의 요구 사항에 맞게 특정 EC2 인스턴스 유형을 선택하여 GPU 가속 컴퓨팅, 특정 CPU 기능, 대용량 메모리 크기와 같은 특수 하드웨어 기능에 액세스합니다.
-
자체 격리된 환경에서 각 태스크를 실행하는 Fargate와 달리 기본적으로 단일 인스턴스에서 여러 태스크로 리소스 사용률과 비용을 최적화합니다.
-
최대 인스턴스 수명이 14일인 보안 규정 준수 및 정기적인 패치 적용을 보장합니다. 이 기간이 지나면 태스크가 새 인스턴스로 자동 마이그레이션됩니다.
-
CAP_NET_ADMIN, CAP_SYS_ADMIN, CAP_BPF를 비롯해 권한 있는 Linux 기능을 사용하여 컨테이너 내에서 고급 네트워킹 및 시스템 관리 기능을 활성화합니다.
IAM 역할
Amazon ECS 관리형 인스턴스에는 두 가지 IAM 역할이 필요합니다.
-
인프라 역할: 이 역할을 사용하면 AWS가 사용자를 대신해 Amazon ECS 관리형 인스턴스를 관리할 수 있습니다.
-
인스턴스 프로파일: 인스턴스 프로파일은 IAM 역할을 Amazon ECS 관리형 인스턴스에 전달하는 방법입니다. 이 프로파일은 다음을 수행하는 데 사용됩니다.
-
컨테이너 워크로드를 실행하는 Amazon ECS 관리형 인스턴스에 대한 IAM 권한을 정의합니다.
-
AWS가 사용자를 대신해 이러한 인스턴스를 관리하도록 허용합니다.
-
프로파일에 정의된 권한에 따라 인스턴스가 AWS 서비스에 액세스할 수 있도록 합니다.
-
보안 및 규정 준수
Amazon ECS 관리형 인스턴스는 워크로드를 보호하기 위해 여러 계층의 보안을 구현합니다.
-
보안 구성 - Amazon ECS 관리형 인스턴스는 SSH 액세스 없음, 변경 불가능한 루트 파일 시스템, SELinux를 통한 커널 수준 필수 액세스 제어를 비롯한 AWS 보안 모범 사례를 따릅니다.
-
자동 패치 적용 - AWS는 사용자가 구성한 유지 관리 기간에 따라 Amazon ECS 관리형 인스턴스를 최신 보안 패치로 정기적으로 업데이트합니다.
-
제한된 인스턴스 수명 - 실행 중인 인스턴스의 최대 수명은 14일로, 애플리케이션이 최신 보안 패치를 사용하여 적절하게 구성된 인스턴스에서 실행되도록 보장합니다.
-
권한 있는 기능 - 네트워크 모니터링 및 관찰성 솔루션과 같이 해당 기능이 필요한 워크로드에 대해 권한 있는 Linux 기능을 선택적으로 활성화할 수 있습니다.
Amazon ECS 관리형 인스턴스는 PCI-DSS, HIPAA 및 FedRAMP를 포함해 Amazon ECS와 동일한 규정 준수 프로그램을 지원합니다. 지원되는 리전에서 Amazon ECS 관리형 인스턴스는 계정 수준 FIPS 엔드포인트 설정을 고려하여 FedRAMP 규정 준수를 달성합니다.
네트워킹
Amazon ECS 관리형 인스턴스는 awsvpc 및 host 네트워크 모드를 지원합니다. awsvpc 네트워크 모드는 각 태스크에 자체 탄력적 네트워크 인터페이스와 VPC 내 프라이빗 IP 주소를 제공합니다. 이를 통해 태스크 수준에서 세분화된 보안 그룹 및 네트워크 ACL 제어가 가능합니다. host 네트워크 모드에서 태스크는 호스트 Amazon ECS 관리형 인스턴스의 네트워크 네임스페이스를 공유합니다. Amazon ECS 관리형 인스턴스에서 태스크 네트워킹에 대한 자세한 내용은 Amazon ECS 관리형 인스턴스에 대한 Amazon ECS 태스크 네트워킹 섹션을 참조하세요.
인스턴스 스토리지
Amazon ECS 관리형 인스턴스는 인스턴스에 연결된 Amazon EBS 데이터 볼륨의 크기 구성을 지원합니다. 이 스토리지는 인스턴스에서 실행되는 모든 태스크 간에 공유되며 바인드 마운드에 사용할 수 있습니다. 태스크 정의에서 volumes, mountPoint 및 volumesFrom 파라미터를 사용하는 컨테이너 사이에서 이 볼륨을 탑재하고 공유할 수 있습니다.
볼륨은 인스턴스 생성 중에 연결됩니다. storageConfiguration 파라미터를 사용하여 Amazon ECS 관리형 인스턴스 용량 공급자를 생성할 때 볼륨 크기를 GiB 단위로 지정할 수 있습니다.
{ ... "managedInstancesProvider": { "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRole", "instanceLaunchTemplate": { "ec2InstanceProfileArn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceProfile", "networkConfiguration": { "subnets": [ "subnet-abcdef01234567", "subnet-bcdefa98765432" ], "securityGroups": [ "sg-0123456789abcdef" ] }, "storageConfiguration": { "storageSizeinGiB" : 100 } } } ... }
이 볼륨의 최소 크기는 30GiB이고 최대 크기는 16,384GiB입니다. 기본적으로 이 볼륨의 크기는 80GiB입니다.
태스크의 풀링, 압축 및 비압축 컨테이너 이미지는 이 볼륨에 저장됩니다. 태스크가 사용해야 하는 인스턴스 스토리지의 전체 양을 확인하려면 태스크에 할당된 인스턴스 스토리지의 총 용량에서 컨테이너 이미지가 사용하는 스토리지 용량을 뺍니다.
Amazon ECS 관리형 인스턴스에 연결된 Amazon EBS 볼륨의 성능은 Amazon EC2 사용 설명서의 Amazon EBS 최적화 인스턴스 설명서에 설명된 대로 해당 Amazon EC2 인스턴스의 성능과 일치합니다.
볼륨의 스냅샷을 생성하여 보안 문제에 대한 포렌식 분석을 수행하거나 애플리케이션을 디버깅할 수 있습니다. Amazon EBS 볼륨의 스냅샷 생성에 대한 자세한 내용은 Amazon EBS 사용 설명서의 Amazon EBS 스냅샷을 참조하세요. Amazon EBS 암호화를 기본적으로 활성화한 경우 볼륨은 기본적으로 암호화에 지정된 AWS KMS 키로 암호화됩니다. 암호화의 기본 제공에 대한 자세한 내용은 Amazon EBS 사용 설명서의 기본적으로 Amazon EBS 암호화 활성화를 참조하세요.
인스턴스에 연결된 데이터 볼륨을 사용하는 것 외에도 Amazon ECS 관리형 인스턴스에서 실행되는 각 태스크에 대해 데이터 볼륨을 구성할 수도 있습니다. 태스크 수준 스토리지 옵션에 대한 자세한 내용은 Amazon ECS 작업에 대한 스토리지 옵션 섹션을 참조하세요.
서비스 로드 밸런싱
Amazon ECS 관리형 인스턴스를 사용하는 Amazon ECS 서비스는 서비스의 태스크 사이에서 트래픽을 고르게 분산하기 위해 ELB를 사용하도록 구성할 수 있습니다.
Amazon ECS 관리형 인스턴스의 Amazon ECS 서비스는 Application Load Balancer, Network Load Balancer 및 Gateway Load Balancer 로드 밸런서 유형을 지원합니다. Application Load Balancer는 HTTP/HTTPS(계층 7) 트래픽을 라우팅하는 반면, Network Load Balancer는 TCP 또는 UDP(계층 4) 트래픽을 라우팅합니다.
이러한 서비스에 대한 대상 그룹을 생성할 때 대상 유형을 instance가 아닌 ip로 선택해야 합니다. 이는 awsvpc 네트워크 모드를 사용하는 태스크가 Amazon EC2 인스턴스와 직접 연결되지 않고 탄력적 네트워크 인터페이스와 연결되기 때문입니다.
모니터링 및 관찰성
Amazon ECS 관리형 인스턴스는 CloudWatch 지표 및 관찰성 도구와의 통합을 통해 포괄적인 모니터링 기능을 제공합니다.
-
CloudWatch 지표 - 작업 및 인스턴스 수준 모두에서 CPU, 메모리, 네트워크 및 스토리지 사용률을 모니터링합니다.
-
Container Insights - 컨테이너화된 애플리케이션에 대한 자세한 성능 지표 및 로그를 가져옵니다.
-
서드 파티 통합 - 권한이 부여된 기능을 활성화하면 승격된 Linux 권한이 필요한 고급 모니터링 및 관찰성 솔루션을 실행할 수 있습니다.
요금 및 비용 최적화
Amazon ECS 관리형 인스턴스를 사용하면 태스크를 실행하는 전체 Amazon EC2 인스턴스에 대한 요금이 청구됩니다. 요금은 워크로드에 대해 선택한 인스턴스 유형에 따라 다릅니다.
Amazon ECS 관리형 인스턴스는 다음과 같은 여러 비용 최적화 기능을 제공합니다.
-
다중 태스크 최적화 - 적절한 크기의 인스턴스에서 여러 태스크를 실행하여 인스턴스 사용률을 극대화합니다.
컴퓨팅 및 인스턴스 절감형 플랜은 Amazon ECS 관리형 인스턴스 워크로드에도 적용됩니다.
Service Quotas
Amazon ECS 관리형 인스턴스 워크로드는 Amazon EC2 온디맨드 인스턴스 서비스 할당량을 따릅니다. Amazon ECS 관리형 인스턴스를 사용하는 Amazon ECS 서비스는 Amazon ECS 서비스 할당량을 따릅니다.
서비스 할당량에 대한 자세한 내용은 다음을 참조하세요.
-
Amazon EC2 엔드포인트 및 할당량(Amazon Web Services 일반 참조)
마이그레이션 고려 사항
Amazon ECS 관리형 인스턴스로의 마이그레이션은 대부분의 워크로드에서 간단합니다.
-
Fargate에서 - 용량 공급자 구성 변경 및 재배포만 필요합니다. 플랫폼 버전 1.4.0을 사용하는 기존 태스크 정의는 완벽하게 호환됩니다.
-
EC2에서 - Fargate로 마이그레이션하는 경우와 유사하지만 특정 인스턴스 유형과 같은 Amazon EC2 기능에 대한 액세스는 유지됩니다.
마이그레이션을 계획할 경우 다음을 고려하세요.
-
애플리케이션은 최대 14일의 인스턴스 수명과 계획된 유지 관리 기간을 허용해야 합니다.
-
장기 실행 태스크(14일 초과)는 Amazon ECS 관리형 인스턴스에 적합하지 않습니다.
-
사용자 지정 AMI는 지원되지 않음 - Amazon ECS 관리형 인스턴스는 AWS 관리형 보안 최적화 AMI를 사용합니다.
제한 사항 및 고려 사항
Amazon ECS 관리형 인스턴스에는 다음과 같은 제한 사항이 적용됩니다.
-
사용자 지정 AMI - AMI는 AWS에서 소유하고 관리함
-
인스턴스 수명 - 보안 패치 및 규정 준수를 보장하기 위한 인스턴스당 최대 런타임은 14일입니다.
-
SSH 액세스 - 보안상의 이유로 사용할 수 없습니다. 디버깅 및 문제 해결에 Amazon ECS Exec를 사용합니다. Amazon ECS API를 통해서만 지원되는 관리 작업.
-
Amazon ECS 관리형 인스턴스에서 실행되는 서비스에서는 Service Connect를 사용할 수 없습니다.