ECS를 사용해 배포해보고자 한다.
아래와 같은 상태에서 시작한다.
1. ECR 생성
1-1. 리포지토리 생성
1-2. 생성한 리포지토리 생성 후 '푸시 명령 보기' 선택
1-3. 사용할 도커 이미지를 위한 도커 파일을 생성한 후 해당 파일이 있는 위치에서 푸시 명령어를 차례대로 입력
2. ECS 태스크 정의
앞에서 빌드한 도커 이미지의 uri를 사용하여 태스크를 정의한다.
나는 스프링 태스크와 redis 태스크를 생성하였다.
ec2 인스턴스와 bridge 네트워크 모드를 선택하였고
cpu와 메모리는 기본 설정보다 작은 값을 설정하였다. -> 서비스 생성 시 프로비저닝 상태가 계속돼서 CPU와 메모리 모두 0.8로 설정하였다.
스프링 태스크에는 스프링 컨테이너를, redis 태스크에는 redis 컨테이너에 대해 설정한다.
각각에 맞는 포트와 프로토콜을 설정한다.
redis의 경우 프로토콜을 선택하지 않았다.
스프링의 경우 환경 변수를 추가로 설정하였다.
3. ECS 클러스터 생성
클러스터를 생성한다.
인프라에서 ec2 인스턴스와 새 ASG 생성, 온디맨드를 선택하였다.
적당한 인스턴스 ami, 유형, 역할, 용량, 키페어 등을 선택한다.
서브넷의 경우 프라이빗 서브넷에서 클러스터를 생성하기 위에 앞에서 프라이빗 서브넷으로 만든 서브넷을 선택하였다.
4. ECS 서비스 생성
생성한 클러스터에서 서비스를 생성한다.
먼저 redis 태스크를 통해 서비스를 생성한다.
레디스 서비스의 경우 스프링 서비스에서 접속하기 위해 서비스 연결 사용을 선택한다.
클라이언트 및 서버 선택 후 포트 별칭 등을 작성한다.
스프링 서비스의 경우도 서비스 연결의 클라이언트 측을 선택한다.
스프링의 환경 변수로 redis의 호스트가 있다면 레디스 서비스의 연결 서비스의 tcp://와 :6379 사이 부분을 작성해준다.
추가로 로드밸런서를 선택하여 앞에서 만들었던 alb를 선택하고 기존 대상 그룹 내의 ec2는 모두 제거한다.
5. 확인
서비스가 정상적으로 동작하면 로드밸런서의 대상그룹에 생성된 ec2들을 추가하고 로드밸런서의 dns로 접속 가능한지 확인한다.
Redis 관련 요청도 잘 수행하는 것을 확인할 수 있다.
아직 클러스터 개념을 잘 모르겠어서 그림을 다음과 같이 그려봤다...
'AWS' 카테고리의 다른 글
ECS CD 적용 (0) | 2025.02.26 |
---|---|
AWS 로드밸런서와 https (0) | 2025.02.26 |
AWS 로드밸런서와 오토스케일링 그룹 (0) | 2025.02.24 |
AWS VPC와 서브넷 (0) | 2025.02.24 |
AWS IAM 계정으로 배포하기 (0) | 2024.06.27 |