인프런 커뮤니티 질문&답변

hk님의 프로필 이미지

작성한 질문수

AWS로 구축하는 MSA와 컨테이너 오케스트레이션

Fargate 마이그레이션 (실습)

ECS Fargate 배포후 504 time-out

24.08.13 15:13 작성

·

102

0

안녕하세요,

회사에서 GCP에서 AWS로 인프라를 이관 중에 있습니다.

강의를 들으면서 개발 서버를 이관했고 ECS에 서비스를 작동 중입니다.

 

하지만, Deploy는 Failed 하고 504 timeout-error가 발생하면서 ALB의 IP들도 모두 unhealthy 상태입니다.

이상한 점은 ECS에서 서비스 로그를 확인하면 스케줄러로 등록해뒀던 작업들이 실행되는 로그를 확인할 수 있습니다. 이로 미루어 볼때 서버는 실행이 되고 있는 상태이나 외부에서 접근이 안되는 것 같아 security-groupvpc 설정, 포트도 확인을 해봤었는데요. 그래도 해결을 못하고 있어서 이렇게 질문 남겨 둡니다. ㅠㅠ

  1. ALB Resource map

스크린샷 2024-08-13 15.00.20.png


2. ECS service 상태

스크린샷 2024-08-13 15.03.45.png
  1. 서비스 이벤트 로그

     

    • service has started 1 tasks: task ******* Amazon ECS replaced 1 tasks due to an unhealthy status.

    • service registered 1 targets in target-group *****

    • service port 3000 is unhealthy in target-group *** due to (reason Health checks failed).

    • service deployment *** deployment failed: tasks failed to start.

답변 2

0

Burger님의 프로필 이미지
Burger
지식공유자

2024. 08. 13. 15:25

안녕하세요 hk님!

 

상태로 봤을 때 가장 유력한 문제는 제가 생각해도 security group 설정인것으로 보입니다.
우선 원인 파악을 위해 태스크의 security group 인바운드 룰의 http 포트를 0.0.0.0/0 으로 열어놓고 로드밸런서의 헬스체크를 확인해보고, 만약 이상태로 healthy가 나오면 security group 설정문제일것입니다.

이 상태에서도 안된다면, 애플리케이션의 health chek 경로나 포트 또는 taskdefinition의 애플리케이션과의 포트 매핑 설정, 로드밸런서의 라우팅 설정을 확인해볼 수 있을것같습니다.

 

이런 부분들 확인 후에도 문제가 계속된다면 추가적인 문의 남겨주세요!

hk님의 프로필 이미지
hk
질문자

2024. 08. 13. 18:09

포트 문제였네요.. 해결했습니다. 도움 주셔서 감사합니다 : )

0

인프런 AI 인턴님의 프로필 이미지

2024. 08. 13. 15:17

안녕하세요, 인프런 AI 인턴입니다.

hk님의 질문에 대하여, ECS Fargate 서비스 배포 후 발생하는 504 Gateway Timeout 문제와 관련하여 ALB의 Target Group에서 모든 IP가 unhealthy 상태인 문제점에 대해 고민하신 것 같습니다. 이러한 문제는 일반적으로 ECS의 서비스가 올바르게 구성되지 않았거나, ALB와 ECS 사이의 통신이 제대로 이루어지지 않을 때 발생할 수 있습니다.

확인해 보아야 할 몇 가지 가능한 원인 및 해결 방법:

  1. Health Check 구성: ALB의 Health Check가 ECS 서비스의 실제 상태와 일치하도록 구성되어 있는지 확인해 보세요. 이는 ‘/api/healthcheck’ 경로로 설정된 Health Check URI가 서비스가 응답을 주고 있는지, 그리고 올바른 포트(3000)에서 서비스가 실행 중인지를 확인하는 중요한 과정입니다.

  2. Security Group 설정: ECS 인스턴스와 ALB 모두 올바른 Security Group 설정을 가지고 있는지 확인하세요. 특히, ALB에서 ECS 인스턴스(또는 Fargate 서비스)로의 인바운드 트래픽이 허용되어 있는지, 그리고 ECS에서 ALB로의 아웃바운드 트래픽에 대한 규칙이 적절한지 체크해야 합니다.

  3. Port 및 Listener 설정: ALB의 Listener가 ECS 서비스가 응답을 주는 포트(3000)와 올바르게 연결되어 있는지 확인하세요. 또한, Fargate 서비스가 올바른 컨테이너 포트와 호스트 포트 설정을 사용하고 있는지 검토해야 합니다.

  4. VPC 및 Subnet 구성: 서비스가 위치한 VPC와 Subnet 설정이 ALB와 올바르게 연결되어 있는지 확인합니다. 이는 두 서비스 간의 통신 흐름에 중대한 영향을 미칠 수 있습니다.

위 사항들을 확인하고, 여전히 문제가 해결되지 않는 경우 다음과 같은 ALB Target Health Checks 관련 문서를 참고하여 문제를 해결해 볼 수 있습니다. 또한, 504 Error와 관련하여 Troubleshoot Your Application Load Balancers 문서에서 추가적인 정보를 얻을 수 있으며, 이 문서는 ALB와 백엔드 서버 간의 통신 문제를 진단하는 데 도움이 됩니다.

내용이 방대하여 복잡하게 느껴질 수 있지만, 문제 해결을 위한 체계적 접근 방식을 따르는 것이 중요합니다. 각 단계별로 구성을 확인하고, 문제가 될 수 있는 부분을 하나씩 제거해 나가시길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

hk님의 프로필 이미지

작성한 질문수

질문하기