티스토리 뷰

이전에 SpringBoot, Node 프로젝트를 도커 이미지로 생성하여 ECR 리포지토리에 올렸습니다. 이제 이렇게 올려진 도커 이미지를 실행하여 컨테이너 서비스를 해보겠습니다.

 

1. VPC 구성

기존에 VPC가 있다면 그것을 사용해도 되고 저 같은 경우는 새로 VPC를 생성했습니다. 구조는 다음과 같습니다. VPC 및 서브넷 생성에 대해서는 따로 설명하지 않겠습니다. (VPC 및 서브넷 생성 참고)

 

 

2. 대상그룹 생성

위 네트워크 구조에서 private subnet에 ECS 서비스를 올릴 것인데 이 ECS 서비스들을 관리할 Load Balancer를 생성할 것입니다. 그 전에 먼저 Load Balancer의 대상이 되는 대상 그룹을 생성하겠습니다. 

 

AWS Management Console에 접속하여 EC2를 검색한 뒤 로드 밸런싱 > 대상 그룹을 선택합니다. 그리고 "대상 그룹 생성"을 클릭합니다.

 

 

현재는 대상이 되는 인스턴스가 없기 때문에 바로 대상 그룹 생성을 선택하고 넘어갑니다.

 

 

현재 SpringBoot(port: 7777) 프로젝트와 Node(port: 7070) 프로젝트를 ECR 도커 이미지로 올려뒀기 때문에 2개의 대상 그룹을 생성합니다.

 

3. NLB 생성

외부에서 들어오는 요청을 7777 포트와 7070 포트로 Load Balancing 해줄 것이기 때문에 NLB를 생성합니다. 외부에서 접속할 NLB이기는 하지만 우선 private subnet에 생성하도록 하겠습니다.

 

 

4. 클러스터 보안그룹 생성

ECS 클러스터를 생성하기 전 미리 클러스터 보안 그룹을 생성합니다. 인바운드 규칙으로 7777, 7070 포트를 열어줍니다.

 

 

5. ECS 클러스터 생성

AWS Management Console에서 ECS를 검색하여 클러스터를 생성합니다.

 

 

6. 작업 정의 생성

ECR에 올라와 있는 도커 이미지를 Docker 컨테이너로 생성할 때, 어떤 설정으로 몇 개 이상 생성 할 지를 정의하는 Set인 작업 정의를 생성합니다. 저는 도커 이미지를 Fargate 형태로 올리겠습니다. (관리할게 없어서 편리한 서비스입니다.)

 

Fargate 선택
task 정의 및 역할 지정
컨테이너화 할 ECR에 있는 이미지 추가

 

ECR에 올라와 있는 이미지가 2개(SpringBoot, Node)이기 때문에 각각 작업을 정의해 줍니다.

 

7. Task 보안 그룹 생성

ECS 서비스를 생성하기 전 각 Task들의 보안 그룹을 생성해주겠습니다.

 

 

8. ECS 서비스 생성

이제 위에서 생성했던 클러스터를 선택하고 서비스를 생성합니다. 서비스는 각 task들의 life-cycle을 관리합니다.

 

 

이렇게 서비스를 작업 정의 별로 하나씩 총 2개 생성합니다.

 

서비스를 생성하고 나면 작업이 정해진 개수대로 실행되고 NLB 대상 그룹에 자동으로 추가되는 것을 확인할 수 있습니다.

 

지금까지 구성한 내용을 전체 아키텍처에서 살펴보면 다음과 같습니다.

 

 

참고

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함