1. 문제 배경
- 현재 EC2에서 ECS로 마이그레이션을 진행하면서, 일부 오류가 발생했었음.
(컨테이너가 백엔드 서버로는 동작하지만, ALB DNS주소/health 와 스웨거에서 503에러 발생)
- 일단 개발은 진행해야하는 상황이었기 때문에, 컨테이너는 잠시 내리고 기존 EC2 서버를 연결해서 다시 사용함
- 문제는 마이그레이션을 하면서 일부 설정을 변경해서그런지, RDS 연결과 관련한 오류들이 발생했었음.
2. 문제 상황
- 헬스체크 문제 없고, RDS에도 mysql을 통해 직접 접근 가능
- swagger를 통한 요청은 가능하고, tail -f nohup.out에도 로그가 찍힘
- 도메인에 접속은 가능하지만, 시설 조회나 로그인 등 RDS 연결이 필요한 기능들에서 막힘
- 이런 RDS 관련 오류가 발생했을때, tail -f nohup.out을 확인한 결과 아무런 로그도 남겨지지 않음
3. 현재 상황 분석
- RDS 연결은 문제 없고, Swagger로 요청 및 응답 정상 -> 백엔드 로직 자체는 문제가 없음.
- 프론트에서 요청을 보내면 막히고, 로그도 남지 않음 -> 프론트에서 백엔드로 연결 문제?
4. 시행착오
시도1. 현재 프론트에서 요청을 주는 url이 잘못된건 아닌가? ❌
-> 현재 프론트에서는 https://api.example.com 으로 로그를 주고 있었는데, 최근에 수정된 부분은 없었음.
시도2. 프론트에서 요청을 보내는 url을 통해 백엔드 서버에 접근할 수 있는가? ⚠️
-> curl 명령어를 통해 직접 백엔드 API 호출 테스트 진행, -i 옵션을 통해 헤더+바디 모두 출력
- curl -i https://example.com은 정상 응답 (200)
- curl -i https://api.example.com 비정상 응답 (503)
hani@Hani-MacBookPro ~ % curl -i https://api.example.com
HTTP/2 503
server: awselb/2.0
date: Tue, 05 Aug 2025 14:51:53 GMT
content-type: text/html
content-length: 162
<html>
<head><title>503 Service Temporarily Unavailable</title></head>
<body>
<center><h1>503 Service Temporarily Unavailable</h1></center>
</body>
</html>
응답 헤더를 분석해 보자.
- curl 요청에 대한 응답이 돌아옴 + server: awselb/2.0 = 도메인 -> DNS -> ELB 연결은 정상
- HTTP/503 에러는 네트워크에 제한이 있는 경우 발생한다. = ELB -> 대상그룹 연결이 비정상
시도3. EC2 보안그룹 확인 ❌
EC2 서버가 ELB의 요청을 받기 위해서는 ELB의 보안그룹을 Source로 하는 인바운드 보안 규칙을 갖고 있어야한다.
-> 보안 그룹에서 문제되는 부분은 없었다.
시도4. 대상그룹과 ELB의 설정을 확인 ✅
대상 그룹은 정상적으로 health 상태였다.
ELB의 리스너 규칙을 확인해보면서,
ECS로 마이그레이션을 하면서 내가 EC2 서버의 보안그룹을 리스너와 연결 해제했던걸 발견하게 되었다 ㅠㅠ
따라서 리스너가 전달할 대상그룹으로 바로 추가하고, 가중치를 0,0,1 로 두어 문제를 해결할 수 있었다.
(현재 ECS는 사용 안하므로)
hani@Hani-MacBookPro ~ % curl -i https://api.example.com
HTTP/2 401
date: Tue, 05 Aug 2025 15:11:01 GMT
content-length: 0
vary: Origin
vary: Access-Control-Request-Method
vary: Access-Control-Request-Headers
set-cookie: JSESSIONID=50BBXXXXXXXXXXXXXXX; Path=/; HttpOnly
x-content-type-options: nosniff
x-xss-protection: 0
cache-control: no-cache, no-store, max-age=0, must-revalidate
pragma: no-cache
expires: 0
x-frame-options: DENY
'AWS' 카테고리의 다른 글
[AWS] CloudFront HTTP 보안 헤더 적용 (4) | 2025.08.12 |
---|---|
[AWS][트러블슈팅] CodeDeploy 오류 해결 (ResourceInitializationError, Only target group in ECS deployment group) (1) | 2025.08.06 |
[AWS] EC2 to ECS 마이그레이션 (Spring 프로젝트, https) (3) | 2025.08.04 |
[AWS] SQS로 비동기로 요청 처리하기 (6) | 2025.07.25 |
[AWS][트러블슈팅]"사이트에 연결할 수 없음" 도메인 정지 문제 해결 (7) | 2025.07.24 |