AWS ECS
AWS ECS
선행
목차
클러스터 생성
- EC2 인스턴스 유형은 2 vCPU, 4GB RAM 이상이 필요시 함 (대부분의 초기 구축 오류는 클러스터 사양 문제에서 발생)
- ecsInstanceRole : 클러스터에게 EC2 인스턴스가 있다는 것을 알림 (없을 경우 클러스터 목록에 안뜸)
| 환경 (목적) | 최소 (Min) | 최대 (Max) | 추천 이유 |
|---|---|---|---|
| 개발 / 테스트(현재 추천 ⭐) | 1 | 2 | • 비용 최소화 • 배포 시 잠시 2대가 되어 끊김 없는 배포(Rolling Update) 가능 |
| 비용 절감형 운영(소규모 서비스) | 2 | 4 | • 기본 가용성 확보 (인스턴스 1대가 죽어도 서비스 유지) • 트래픽 증가 시 2배까지 확장 가능 |
| 고가용성 운영(안정성 중요) | 3 | 6+ | • 3개 AZ(가용 영역) 분산 • 1개 AZ가 통째로 죽어도 서비스 안정적 유지 |
| 절전 모드(야간/주말) | 0 | 1 | • 사용 안 할 때 0으로 줄여 비용 0원 • 다시 켤 때 시간이 조금 걸림 (Cold Start) |
private 서브넷 사용의 경우 NAT설정 확인
public 서브넷의 경우 igw와 ip 자동 지정 확인
| 구분 | 항목 | 값 |
|---|---|---|
| 클러스터 이름 | 클러스터 이름 | pista-ecs-cluster-web |
| 인프라(고급) | 컴퓨팅 용량 확보 방법 선택 | Fargate 및 자체 관리형 인스턴스✅ |
| 컴퓨팅 용량 확보 방법 선택 | Fargate 및 관리형 인스턴스 | |
| Auto Scaling 그룹(ASG) | 새 Auto Scaling 그룹 생성 | |
| 프로비저닝 모델 | 온디멘드 | |
| 컨테이너 인스턴스 Amazon Machine Image(AMI) | Amazone Linux 2023 Bottlerocker x86_64 | |
| EC2 인스턴스 유형 | t3.medium | |
| EC2 인스턴스 역할 | ecsInstanceRole | |
| 원하는 용량-최소 | 1 | |
| 원하는 용량-최대 | 2 | |
| SSH 키 페어 | mz-pista-key | |
| 루트 EBS 불륨 크기 | 30GB(최솟값) | |
| 네트워크 설정-VPC | pista-vpc | |
| 네트워크 설정-서브넷 | pista-subnet-private1-1a, pista-subnet-private2-1b | |
| 네트워크 설정-보안 그룹 | pista-sg-web | |
| 네트워크 설정-퍼블릭 IP 자동 지정 | x |
태스크 정의
Amazon Elastic Container Service > 새 태스크 정의 생성
- 인프라 요구 사항-태스크 역할 : S3, DB 접근이 필요시 사용
| 모드 | 설명 | Fargate 지원 | 장점 및 특징 |
|---|---|---|---|
| awsvpc (⭐추천) | 태스크마다 별도의 IP 부여 | ⭕ 필수 | • 성능 최상 (EC2 거치지 않음) • 보안 그룹을 태스크별로 따로 설정 가능 |
| bridge | EC2의 IP를 공유해서 사용 | ❌ 불가 | • 동적 포트 매핑 가능 (포트 충돌 걱정 없이 여러 개 띄우기) • EC2에서만 사용 가능 |
| host | EC2의 네트워크를 그대로 사용 | ❌ 불가 | • 설정이 제일 쉽지만 포트 충돌 위험 큼 |
| CPU (vCPU) | 설정 가능 메모리 (GB) | 추천 용도 |
|---|---|---|
| 0.25 vCPU | 0.5 GB ~ 2 GB | 백그라운드 작업, 스크립트 |
| 0.5 vCPU | 1 GB ~ 4 GB | 웹 서버, 개발/테스트 (현재 추천) |
| 1 vCPU | 2 GB ~ 8 GB | 일반적인 실무 애플리케이션 |
| 2 vCPU | 4 GB ~ 16 GB | 트래픽 많은 서비스 (⚠️ 1GB 설정 불가) |
| 4 vCPU | 8 GB ~ 30 GB | 머신러닝, 고성능 데이터 처리 |
| 구분 | 항목 | 값 |
|---|---|---|
| 태스크 정의 구성 | 테스크 정의 패밀리 | pista-ecs-task-web |
| 인프라 요구 사항생성 | 시작 유형 | Amazon EC2 인스턴스✅ |
| OS, 아키텍쳐, 네트워크 모드 | Linux/x86_64 awsvpc | |
| CPU (vCPU) | 0.5 vCPU | |
| 메모리 (GB) | 1 GB | |
| 태스크 역할 | ecsTaskExecutionRole | |
| 태스크 실행 역할 | ecsTaskExecutionRole | |
| 컨테이너 | 컨테이너-1-이름 | pista-web |
| 컨테이너-1-이미지 URI | pista/web | |
| 컨테이너-1-포트 | 80 | |
| 리소스 할당 제한 | 0 0 0 0 (비권장) |
서비스 정의
서비스 생성(pista-ecs-service-web)
| 구분 | 항목 | 값 |
|---|---|---|
| 서비스 세부 정보 | 테스크 정의 패밀리 | pista-ecs-task-web |
| 테스크 정의 개정 | 2 | |
| 서비스 이름 | pista-ecs-service-web | |
| 환경 | 컴퓨팅 구성-컴퓨팅 옵션 | 용량 공급자 전략✅ |
| 용량 공급자 전략 | 클러스터 기본값 사용✅ | |
| 배포 구성 | 스케줄링 전략 | 복제본 |
| 원하는 태스크 | 1 | |
| 가용 영역 리밸런싱 | ✅ | |
| 배포옵션 | default | |
| 네트워킹 | vpc | pista-vpc |
| 서브넷 | pista-subnet-private1-1a,pista-subnet-private2-1b | |
| ⭐ | 보안 그룹 이름 | pista-sg-web |
| ⭐로드 밸런싱 사용 | VPC | pista-vpc |
| 로드 밸런서 유형 | ALB | |
| 컨테이너 | pista-web 80:80 | |
| 서비스 자동 크기 조정 | 서비스 자동 크기 조정 사용 | ✅ |
| 최소 태스크 개수 | 1 | |
| 최대 태스크 개수 | 2 | |
| CPU 사용률 | 80% | |
| 메모리 사용률 | 80% |
점검
- [] 라우팅 테이블 확인 (nat, igw)
- 태스크 대기중 확인 -> 프로비저닝 후 3~5 분 소요
- 타겟 그룹 Health Check 확인
- ALB의 보안 그룹 확인
NOTWORKING
- private 서브넷의 경우 NAT 게이트웨이 설정확인
- 라우팅 테이블 확인[nat, igw]
- [] ALB 내부 서브넷 확인