티스토리 뷰

 

이번 글에서는 AWS Elastic Beanstalk과 RDS 환경을 세팅하고, 두 인스턴스를 연결해보자.

먼저 AWS Elastic BeanStalk, VPC, Security Group의 개념부터 알아보자.

 

[ Elastic BeanStalk ]

Elastic Beanstalk은 EC2 인스턴스, 데이터베이스, 로드밸런서 등 여러 서비스를 포함한 환경을 구성하며 소프트웨어를 업데이트할 때마다 자동으로 환경을 관리해준다.

 

[ VPC ]

Amazon Virtual Private Cloud(VPC)는 AWS 클라우드에서 논리적으로 격리된 공간을 제공하는 것이다. VPC를 통해 고객이 정의한 가상 네트워크에서 AWS 리소스를 시작할 수 있다. 아래와 같이 ElasticBeanstalk 인스턴스나 RDS 등을 생성하면 자동적으로 기본 VPC(default VPC)가 할당이 된다. 할당은 지역(region) 별로 다르게 할당된다. 

 

 

하지만, 아래와 같이 VPC가 같다고 해서 인스턴스(EC2, EB, RDS ..) 간의 통신이 가능한 것은 아니다. 통신을 위해선 Security Group을 설정해야 한다.

 

 

[ Security Group ]

Security Group이란 inbound와 Outbound를 통제해서 트래픽을 열어줄 수도 있고, 닫아줄 수도 있다. 같은 VPC 내 AWS 서비스 간 통신을 위해선 같은 VPC에서 오는 트래픽을 모두 허용하도록 Security Group을 구성하면 된다.

  • Inbound : 외부에서 EC2 인스턴스나 EB 인스턴스로 요청을 보내는 트래픽 (HTTP, HTTPS, SSH ..)
  • Outbound : 인스턴스 (EC2, EB ..)에서 외부로 나가는 트래픽, 파일을 다운로드하거나 inbound로 들어온 트래픽을 처리하여 응답하는 경우도 포함된다. 

 

 


1. AWS Elastic Beanstalk 환경 생성

Docker running on 64bit Amazon Linux 2 선택

 

 

2. MySQL을 위한 AWS RDS 생성하기

데이터베이스는 개발 환경에서는 Docker 컨테이너를 이용하고, 운영환경에서는 AWS RDS 서비스를 이용하는 것이 좋다. DB 작업은 중요한 데이터들을 보관하고, 이용하는 부분이기에 실제 데이터들을 다루는 운영 환경에서는 더욱 안정적인 AWS RDS를 이용해 DB를 구성하는 것이 좋다.

 

 

MySQL 엔진 버전은 기본적으로 설정되는 것을 사용하면 된다.

 

마스터 사용자 이름과 마스터 암호를 입력한다. (하고 싶은 값으로 입력)

 

 

템플릿은 상황에 따라 선택, 현재는 테스트를 위한 것임으로 프리 티어를 선택했다.

현재는 실습을 위한 것이므로 인스턴스 사양을 가장 낮은 것으로 선택했다.

 

 

EB 인스턴스를 생성할 때 default VPC가 할당되므로 해당 VPC 선택

 

 

Spring boot 애플리케이션에서 사용할 데이터베이스 이름 입력 후 RDS 생성 버튼 클릭

 

 

아래와 같이 RDS 생성에 성공했다 !

 

 

 

3. VPC와 Security Group 설정하기

현재 RDS(MySQL)와 EB 인스턴스는 default VPC에 속해있다. RDS와 EB 인스턴스가 통신하기 위해서는 Security Group을 설정해주어야 한다. 따라서 같은 VPC에서 오는 트래픽은 모두 허용하도록 Security Group 생성 후, RDS와 EB 인스턴스에 적용시켜 보자.

 

3-1. Security Group 생성하기

1. 보안그룹 생성 (VPC - 보안 그룹 - 보안 그룹 생성)

 

 

2. 인바운드 규칙 추가

 

 

포트 범위는 0.0.0.0/0 을 해서 모든 포트를 개발할 수도 있지만, 실제 필요한 mysql 포트 3306만 개방해주었다.

보안 그룹은 위에서 생성한 보안 그룹(DockerSecurityGroup)을 선택하고, 규칙 저장 클릭

 

 

인바운드 규칙 추가 완료 !

 

 

3-2. Security Group 적용하기

1. RDS에 Security Group 적용

 

 

RDS 보안 그룹에 위에서 생성한 보안 그룹을 추가 후 DB 인스턴스 수정 버튼 클릭

그 후 수정 사항 적용 시점은 즉시 적용 선택

 

 

이로써 RDS에 Security Group 적용을 완료했다.

 

 

2. EB 인스턴스에 Security Group 적용

Elastic Beanstalk - 구성 - 인스턴스 편집 클릭

 

 

위에서 생성한 보안그룹 선택 후 수정 완료 클릭 (warning은 무시해도 된다)

 

 

같은 VPC 내 인스턴스(RDS, EC2)들이 통신하기 위해선 같은 보안그룹을 사용해야한다. 따라서 RDS에 적용시킨 보안그룹을 EB에도 적용시켜줘야 서로 통신이 가능하다. (중요)

 

같은 VPC 내 AWS 서비스 통신을 위해 Security Group을 생성하고, RDS, EB에 적용해봤다. 결과적인 구조는 아래와 같다.

 

 

4. EB와 RDS 소통을 위한 환경변수 설정하기

보안 그룹까지는 다 설정했다. 하지만 아직 Elastic BeanStalk 안에 있는 컨테이너들이 RDS와 소통할 때 RDS의 환경변수를 인식하지 못한다. 따라서 Elastic BeanStalk에 환경변수를 설정해보자.

 

Elastic Beanstalk - 구성 - 소프트웨어 편집 클릭

 

 

 

환경 속성에 RDS 환경 변수를 입력해야 한다. (환경 변수 입력 후 적용 클릭)

  • RDS_USERNAME, RDS_PASSWORD 는 RDS를 생성할 때 입력한 마스터 사용자 이름, 마스터 사용자 암호를 입력하면 된다.
  • RDS_HOSTNAME 은 아래 사진과 같이 해당 RDS의 앤드포인트를 입력하면 된다.

 

 

 

이로써, Elastic Beanstalk, RDS 환경 세팅과 두 인스턴스 연결을 이뤘다.

다음 글에서는 AWS Elastic Beanstalk과 Github Action을 연동하고, CI/CD 구축을 마무리해보자.

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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
글 보관함