사전 배경

ECS 에서는 Fargate/EC2 타입의 서비스를 지원한다. 우리 팀은 지금까지 Fargate 형식의 서비스를 운영했는데 이번에 EC2 서비스를 시도하면서 기존 인프라와 배포-운영 면에서 장단점을 찾아보는 시도를 했다.

에러 발생


그렇게 팀에서 쓰고있던 ECS 클러스터에 EC2 서비스를 배포하다가 이런 에러를 만나게 되었다.
service v1-test-ec2 was unable to place a task because no container instance met all of its requirements. Reason: No Container Instances were found in your cluster. For more information, see the Troubleshooting section.


트러블 슈팅

일단 에러 지점을 찾으려 했다. 먼저 로컬 컨테이너 테스트를 진행하면서 이미지가 잘 실행되는 지 확인했으나 이상이 없었다. 두번 째로 기존에 하던대로 Fargate 형태의 서비스를 생성해보는데 결과는 health-check 까지 성공하였다.


서비스의 옵션은 EC2/Fargate 타입을 제외하곤 같았는데 원인이 무엇일까?

EC2 타입의 서비스를 운영하려면 어떤 설정이 더 필요한 것인가로 생각이 흘렀다.

구글링 레퍼런스를 찾으면 ec2 관련 권한을 추가하라는 말이 가장 많이 있었다.

근데 우리 클러스터엔 ec2가 존재하지 않는데?


원인 확인

결국 팀장님께 헬프했다.
알고보니 ec2 작업정의를 통해 ec2를 실행시키려면 클러스터에 ec2가 등록되어 있어야 한다고 한다.
기존 클러스터 등록 시 Fargate만 사용하기로 했기에 ec2는 고려되지 않았다.
그래서 외부 인스턴스를 등록하거나 새로 ec2를 지원하는 타입의 클러스터를 새로 생성해야 함을 알게 되었다.


해결

그래서 새로 클러스터를 생성했고 EC2 Linux + 네트워킹 타입을 선택했다.
세 가지 타입에 대해선 공식문서로 더 알아보기로 하자.


새로 만든 클러스터에서 아까 했던 대로 EC2 타입 서비스를 생성했더니 health-check 까지 성공할 수 있었다.


회고

로그는 거짓말을 하지 않는다.결국 클러스터 내에 인스턴스가 없어서 벌어진 일이었다. 오류 원인은 결국 팀장님이 찾으셨지만 Fargate 에서 서비스를 생성해본 실험으로 좀 더 명확히 원인을 찾을 수 있지 않았을까 싶다.아무튼 오류 지점을 찾고 여러 테스트를 해보고, 그 결과를 기반으로 용기내어 조언을 구해보았다. 이번에 느낀 거지만 인프라 설정들을 구성할 때 하나하나 어떤 의미를 갖는지 찾아보는 것이 도움이 많이 되었고 앞으로도 정리하겠다는 목표가 생겼다.

1개의 댓글

comment-user-thumbnail
2023년 9월 11일

성장하셨군요 ~^^ 축하드립니다 ~

답글 달기