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

천주현님의 프로필 이미지

작성한 질문수

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

VPC로 네트워크 구성 (실습)

aws ecs의 service 생성 오류

24.10.19 17:03 작성

·

73

1

강의 너무 잘 듣고 있습니다! aws 사용만 할줄 알았지 이렇게 심도있게 공부하는건 처음인거 같습니다!

저는 강사님이 하신 코드와 비슷하게 쇼핑몰 웹사이트 백엔드 개발을 해보려고 user, product 서버를 만들고 aws ecr과 aws ecs를 이용해서 배포하려고 했습니다. 그래서 vpc부터 alb까지 따라했고, aws ecs 태스크, 클러스트까지 만들었지만 ecs 서비스를 만들려고 할때

user-service 배포 중 오류가 발생했습니다.Resource handler returned message: "Error occurred during operation 'ECS Deployment Circuit Breaker was triggered'." (RequestToken: a2db5dfb-7a55-ce69-fb99-854b5e0efc28, HandlerErrorCode: GeneralServiceException)

health-check는 200으로 잘 돌아오는데 계속 서비스 생성에 실패하는 오류가 발생합니다. 서버 2개가 있는데 서버별로 각각 task를 만들고, 그에 해당하는 서비스도 각각 생성해야 하는게 맞는지 여쭤보고 싶었습니다.

답변 4

1

천주현님의 프로필 이미지
천주현
질문자

2024. 10. 20. 20:50

강의를 다시 보면서 ecs배포를 하고 있는데,

CannotPullECRContainerError: RequestError: send request failed caused by: Post "https://api.ecr.ap-northeast-2.amazonaws.com/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

이런 ecr container에서 이미지를 받아올수 없다고 합니다. ECR의 IAM에 Push권한 말고도 추가해야하는 권한이 있는지 궁금합니다.

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

2024. 10. 20. 21:05

Private subnet에 배치된 태스크라면 ecr에 접근이 가능한 권한과 추가적으로 ecr에 접근이 가능하도록 nat gateway 또는 vpc endpoint가 필요합니다.

혹시 다른 문제가 더 발생하면 추가적인 문의 해주시요!

천주현님의 프로필 이미지
천주현
질문자

2024. 10. 20. 21:10

답변 감사합니다! VPC endpoint는 강의영상에서 다루셨던 3개의 endpoint 이외에 추가적으로 생성해줘야 하는것이 있을까요??

image.png

 

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

2024. 10. 20. 21:28

네 provate subnet에 배치된 인스턴스에서 vpc endpoint로 ecr에 접근하기 위해서는 ecr.api/ecr.dkr/s3 이렇게 세가가 최소한으로 필요할 수 있습니다.

이 부분 확인 한 번 부탁드릴게요!

1

천주현님의 프로필 이미지
천주현
질문자

2024. 10. 20. 03:25

답변 감사합니다! 추가적으로 공부해보고 적용시켜보겠습니다!

0

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

2024. 10. 19. 19:57

안녕하세요 천주현님!

강의 잘 들어주셔서 감사하고 도움이 되셨다면 다행입니디~

 

질문 주신 내용이 다른 서버를 한 서비스에서 각각의 태스크에 배포해도 되는것인지 여쭤보신거면, 그렇게는 일반적으로 사용하지 않고 서버마다 각각의 서비스를 만드는게 일반적입니다.

이유는 태스크 정의에서 각각의 서버에 맞는 설정을 하게 되고, 또 서비스별로 로그나 모니터링을 구분해야 이후에 유지보수도 쉽게 가능합니다!

 

말씀해주신 오류는 해결하기 의해서 추가적인 정보가 필요할것같습니다.

태스크에 출력된 에러 로그나 태스크정의, 서비스의 설정등을 알 수 있으면 좋을것 같습니다!

 

 

0

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

2024. 10. 19. 17:06

안녕하세요, 인프런 AI 인턴입니다. 천주현님.

ECS 서비스를 만들 때 발생하는 “ECS Deployment Circuit Breaker was triggered” 오류를 해결하기 위해 몇 가지 확인해 보셔야 할 사항을 안내드리겠습니다.

오류 원인 및 해결 방법 안내:

  1. 서비스 별 태스크 정의 확인: 각 서버(user-service, product-service)에 대해 ECS 태스크 정의와 ECS 서비스를 각각 생성해야 합니다. 두 개의 서버가 서로 다른 요구사항(예: CPU, 메모리, 환경 변수 등)이 있을 수 있기 때문에, 이를 반영한 각 태스크 정의가 필요합니다.

  2. 서비스 생성 시 네트워크 구성 확인: VPC, Subnet, 보안 그룹 등의 네트워크 설정이 올바르게 구성되어 있는지 확인해야 합니다. 특히, 서비스가 사용할 서브넷이 ALB와 연결되어 있는지와 보안 그룹이 인바운드 트래픽을 올바르게 허용하는지 점검하세요.

  3. ECS 클러스터 리소스 점검: 클러스터에 충분한 리소스가 있는지, 태스크 실행에 문제가 없는지 확인해 보세요. 특히, Fargate를 사용하는 경우 할당된 리소스(CPU, 메모리)가 부족하지 않은지 살펴보시기 바랍니다.

  4. 로그 및 배포 트러블슈팅: AWS CloudWatch 또는 ECS의 이벤트 로그를 확인하여 추가적인 오류 메시지를 확보하세요. 구체적인 오류 메시지는 문제를 해결하는 데 큰 도움이 될 수 있습니다.

  5. Health Check 적용 방식: ALB의 Health Check 결과가 200으로 정상이라면, 다른 부분에서의 설정 오류일 가능성이 높습니다. 이를 위해, 사용 중인 이미지에 잘못된 엔트리포인트나 커맨드가 있는지 확인해야 합니다.

관련 질문 유사 케이스:
- ECS에서 노드서버 배포중 오류가 있어서 질문드립니다: 이 질문에서는 네트워크 설정 및 보안 그룹 문제로 인해 오류가 발생하는 케이스에 대한 답변이 제공된 바 있습니다.
- ECS Fargate 배포후 504 time-out: 설정 오류로 인해 504 Timeout 문제 및 ALB 페일(deployment fail)이 발생했을 때의 해결 방법을 안내합니다.

위의 정보를 기반으로 ECS 서비스 설정을 천천히 다시 검토해 보시길 권장드립니다. 각 서비스를 별도로 생성 및 관리해야 하고, 네트워크 및 리소스 설정을 맞춤화하여 원활한 배포가 가능하도록 도움을 드리겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.