URL을 통해 화면을 확인하려고 했을 때, ECS에서 생성한 EC2 인스턴스는 공인 IP나 Elastic IP로 직접 접속할 수 있었지만, Fargate에서는 서비스에 접속할 때 DNS 이름을 사용해야 한다는 점을 알게 되었다.
현재, ECS에서는 8080 포트를 사용하는 WEB 컨테이너와 60818 포트를 사용하는 API 컨테이너가 연결되어 있으며, 화면 접속은 8080 포트를 통해 이루어지고, API와의 통신은 60818 포트를 사용하고 있다.
이러한 배경을 바탕으로, DNS 접속을 위한 ALB와 대상 그룹의 개념 및 설정 방법에 대해 알아보자.
EC2가 아닌 Fargate로 서비스 설정 시, 기존의 EC2 IP (예: 13.124.226.129)로는 URL을 확인할 수 없습니다. 대신 Fargate는 동적으로 IP를 할당하므로 고정된 IP 대신 DNS를 이용해 서비스에 접근해야 합니다. 이를 위해 ALB(Application Load Balancer)나 NLB(Network Load Balancer)를 통해 URL을 확인해야 합니다.
URL 접속 시, 화면은 8080 포트로만 사용하며, API 통신은 60818 포트로 이루어지므로 ALB에서는 8080 포트만 설정하면 됩니다.
http://<ec2-public-ip>:8080http://<load-balancer-dns-name>| ALB(80) → 대상 그룹(8080) → 컨테이너(8080) |
ALB는 80번 포트로 들어온 요청을 받아 8080번 포트에서 실행 중인 컨테이너로 전달합니다. 이 과정에서 ALB 리스너가 중요한 역할을 합니다. 리스너는 클라이언트의 요청을 받아 해당 요청을 어디로 전달할지 결정합니다.
| 구분 | Fargate (awsvpc 모드) | EC2 (bridge/host/awsvpc 모드) |
|---|---|---|
| 네트워크 모드 | awsvpc (컨테이너에 개별 IP 할당) |
bridge (EC2가 IP 할당) / host (EC2 공유) / awsvpc 가능 |
| 대상 그룹 타입 | IP (컨테이너 개별 IP 등록) | 인스턴스 (EC2 등록 후 내부에서 컨테이너 연결) |
| 트래픽 흐름 | ALB → 컨테이너 직접 연결 | ALB → EC2 → 컨테이너 내부 라우팅 |
ECS 서비스에서 ALB 설정 시, 대상 그룹을 새로 생성할 때 기본적으로 80 포트용 대상 그룹만 생성할 수 있습니다.
따라서 8080 포트의 대상 그룹을 별도로 생성해야 합니다.
AWS 콘솔에서 EC2 > 대상 그룹으로 이동한 후, "대상 그룹 생성" 버튼을 클릭합니다.

그룹 세부 정보 설정에서 먼저 기본 구성으로 "IP 주소"를 선택합니다.
Fargate는 ENI(Elastic Network Interface)를 사용하므로, "IP" 유형의 대상 그룹과만 호환됩니다.
이후 대상 그룹 이름을 입력합니다.

HTTP 프로토콜은 ALB와 호환되지만, TCP 프로토콜은 ALB와 호환되지 않으므로, 프로토콜 : 포트는 HTTP 와 8080로 작성합니다.

나머지 설정은 그대로 두고, '다음' 버튼을 클릭합니다.

대상 등록 화면으로 넘어가면, '대상 그룹 생성' 버튼을 클릭합니다.

다음과 같이 진행하면 대상 그룹이 성공적으로 생성된 것을 확인할 수 있습니다.

ECS 서비스에서 '로드 밸런싱'을 선택한 후, 'ALB'와 '대상 그룹'으로 이동하여 기존 대상 그룹 사용을 선택합니다.
그리고 이전에 생성한 대상 그룹 이름을 선택합니다.

EC2 > 대상 그룹으로 다시 이동하면, 생성한 대상 그룹에 로드 밸런서가 추가된 것을 확인할 수 있습니다.
