지난번 프라이빗 서브넷에 ECS 클러스터를 구성하였다.
그런데 알고 보니 NAT gateway는 시간당 0.059$의 요금이 청구된다...
하루 운영하니 거의 7~8 달러가 늘어나서 급히 NAT gateway를 삭제하였다.
찾아보니 NAT gateway 대신 NAT instance를 사용하는 방법이 있어 적용해보았다.
1. EC2 인스턴스 생성
인스턴스를 생성할 때 AMI 선택 시 NAT를 검색해 이미지를 선택해준다.
2. 탄력적 IP 할당
생성된 인스턴스에 탄력적 IP를 할당받아 연결해준다.
3. 프라이빗 서브넷 라우팅 테이블 생성
이전과 같이 라우팅 테이블을 생성하여 프라이빗 서브넷으로 사용할 서브넷을 연결해준다.
이때 전과 달리 0.0.0.0/0 에 nat-gateway가 아닌 생성한 인스턴스를 선택하여 라우팅을 편집한다.
위와 같이 설정하면 nat-gateway 대신 인스턴스를 사용해 프라이빗 서브넷 클러스터에 있는 ec2들도 인터넷에 연결 가능해진다.
한계...?
하루 지나고 보니 해당 인스턴스의 프리티어 data transfer가 85%를 초과했다는 알림 메일이 왔다.
그리고 ECS에서 태스크를 실행하는데 문제가 발생했고(server-connect를 위한 컨테이너의 unhealthy 상태 발생) 서버 속도가 느려진 것을 체감했다.
그래서 ECS에서 퍼블릭 서브넷에 클러스터를 생성하는 것으로 수정하였다.
추가적으로 클러스터의 최대 인스턴스 수를 4로 설정했었는데 서비스 3개를 실행하다보니 태스크를 변경하는 과정에서 프로비저닝 상태가 계속되었다. 따라서 새로운 클러스터를 생성할 때에는 넉넉하게 설정하였다.
경험상 ECS 태스크가 프로비저닝으로 유지되는 경우 해결 방법은 3가지인 듯 하다.
1) 태스크에서 정의한 vCPU와 메모리에 해당하는 클러스터 용량 부족
2) 인터넷 연결의 문제(프라이빗 서브넷에 nat-gateway가 연결되어 있지 않음 등)
3) 클러스터의 최대 EC2 인스턴스 수의 부족
'AWS' 카테고리의 다른 글
[테코톡] Spring Boot와 AWS를 이용한 이미지 업로드 최적화 (0) | 2025.04.01 |
---|---|
ECS CD 적용 (0) | 2025.02.26 |
AWS 로드밸런서와 https (0) | 2025.02.26 |
AWS ECS (0) | 2025.02.26 |
AWS 로드밸런서와 오토스케일링 그룹 (0) | 2025.02.24 |