본문으로 건너뛰기

ECS EC2 + bridge 템플릿

ECS EC2 + bridge 템플릿

목차


아키텍처 개요

┌─────────────────────────────────────────────────────────┐
│ ECS Cluster (EC2) │
│ ┌─────────────────────────────────────────────────┐ │
Internet ──► ALB ──►│ │ EC2 Instance (10.0.10.x) │ │
:80 :32768+ │ │ └─ container (host:32768+ → :{{PORT}}) │ │
│ └─────────────────────────────────────────────────┘ │
│ Target Group: Instance Type (bridge) │
└─────────────────────────────────────────────────────────┘

bridge 모드: 동적 포트 매핑 (32768-65535) → 대상 그룹 타입: Instance

⚠️ 주의: ALB와 대상 그룹(Instance 타입)을 서비스 생성 전에 미리 생성해야 함

선행 작업


보안 그룹

{{PREFIX}}-sg-alb

변수소스
보안 그룹 이름{{PREFIX}}-sg-alb-
인바운드 규칙TCP 800.0.0.0/0
인바운드 규칙TCP 4430.0.0.0/0
아웃바운드 규칙모든 트래픽0.0.0.0/0

{{PREFIX}}-sg-ec2 (동적 포트 매핑)

변수소스
보안 그룹 이름{{PREFIX}}-sg-ec2-
인바운드 규칙TCP 32768-65535{{PREFIX}}-sg-alb
인바운드 규칙TCP 22관리자 IP
아웃바운드 규칙모든 트래픽0.0.0.0/0

클러스터

구분항목
클러스터 이름클러스터 이름{{PREFIX}}-cluster
인프라(고급)컴퓨팅 용량 확보 방법 선택Fargate 및 자체 관리형 인스턴스✅
Auto Scaling 그룹(ASG)새 Auto Scaling 그룹 생성
프로비저닝 모델온디멘드
컨테이너 인스턴스 AMIAmazon Linux 2023
EC2 인스턴스 유형t3.medium
EC2 인스턴스 역할ecsInstanceRole
원하는 용량-최소2
원하는 용량-최대3
SSH 키 페어{{SSH_KEY}}
루트 EBS 불륨 크기32GB
네트워크 설정-VPC{{PREFIX}}-vpc
네트워크 설정-서브넷{{PREFIX}}-subnet-private1-1a,
{{PREFIX}}-subnet-private2-1b
네트워크 설정-보안 그룹{{PREFIX}}-sg-ec2
네트워크 설정-퍼블릭 IP 자동 지정x

태스크 정의

구분항목
태스크 정의 구성테스크 정의 패밀리{{PREFIX}}-task
인프라 요구 사항시작 유형Amazon EC2 인스턴스✅
OS, 아키텍쳐, 네트워크 모드Linux/x86_64, bridge
CPU (vCPU)0.5 vCPU
메모리 (GB)1 GB
태스크 역할ecsTaskExecutionRole
태스크 실행 역할ecsTaskExecutionRole
컨테이너컨테이너-1-이름{{CONTAINER_NAME}}
컨테이너-1-이미지 URI{{ECR_URI}}
컨테이너-1-포트 매핑호스트: 0 (동적), 컨테이너: {{PORT}}
리소스 할당 제한0 0 0 0 (비권장)

대상 그룹

EC2 > 대상 그룹 > 대상 그룹 생성

⚠️ bridge 모드: 서비스 생성 전에 대상 그룹을 먼저 생성해야 함

대상 그룹 생성({{PREFIX}}-tg)

1단계 대상 그룹 생성

변수
설정-대상 유형인스턴스
설정-대상 그룹 이름{{PREFIX}}-tg
설정-프로토콜HTTP
설정-포트{{PORT}}
설정-IP 주소 유형IPv4
설정-VPC{{PREFIX}}-vpc
설정-프로토콜 버전HTTP1
상태 검사-상태 검사 프로토콜HTTP
상태 검사-상태 검사 경로/

2단계 대상 등록

변수
1대상 등록 건너뛰기 (ECS 서비스가 자동 등록)

로드 밸런서

EC2 > 로드 밸런서 > 로드 밸런서 생성 > Application Load Balancer

로드 밸런서 생성({{PREFIX}}-alb)

Application Load Balancer 생성

변수
기본 구성-로드 밸런서 이름{{PREFIX}}-alb
기본 구성-체계인터넷 경계
기본 구성-로드 밸런서 IP 주소 유형IPv4
네트워크 매핑-VPC{{PREFIX}}-vpc
네트워크 매핑-가용영역 및 서브넷2
az1{{PREFIX}}-subnet-public1-1a
az2{{PREFIX}}-subnet-public2-1b
보안 그룹{{PREFIX}}-sg-alb
리스너 및 라우팅-프로토콜HTTP
리스너 및 라우팅-포트80
리스너 및 라우팅-라우팅 액션대상 그룹으로 전달
리스너 및 라우팅-대상그룹{{PREFIX}}-tg

서비스 정의

구분항목
서비스 세부 정보테스크 정의 패밀리{{PREFIX}}-task
테스크 정의 개정1
서비스 이름{{PREFIX}}-service
환경컴퓨팅 구성-컴퓨팅 옵션용량 공급자 전략✅
용량 공급자 전략클러스터 기본값 사용✅
배포 구성스케줄링 전략복제본
원하는 태스크2
가용 영역 리밸런싱
⭐로드 밸런싱로드 밸런서{{PREFIX}}-alb (기존 선택)
대상 그룹{{PREFIX}}-tg (기존 선택)
서비스 자동 크기 조정서비스 자동 크기 조정 사용
최소 태스크 개수2
최대 태스크 개수4
CPU 사용률75%

점검

  • 라우팅 테이블 확인 (NAT, IGW)
  • ALB 보안 그룹 확인
  • ALB 서브넷 확인 (Public)
  • 대상 그룹 타입 확인 (Instance)
  • 대상 그룹 Health Check 확인
  • EC2 보안 그룹 - 동적 포트 범위 (32768-65535) 확인

❌ NOT WORKING

bridge 모드로 태스크 정의 후 서비스 생성에서 ALB/타겟그룹을 새로 생성하지 말 것 → 따로 ALB와 타겟그룹(Instance) 생성 후 서비스 생성에서 "기존 로드 밸런서 사용" 선택


관련 문서

그래프 뷰

그래프 데이터 로딩 중…
현재: ECS EC2 + bridge 템플릿
노드 클릭 → 이동 · 드래그 → 위치 조정