기술개발/AWS

VPC 피어링(RDS 데이터베이스 공유)

한승욱 2021. 10. 14. 01:33
반응형

배경

본인은 현재 소프트웨어 마에스트로 과정에서 더폼(https://the-form.io/)이라는 폼 빌더를 만들고 있다.

설문지라는 프로덕트 특성상 '이미지 업로드'가 필수인데, 관련해서는 https://wooogy-egg.tistory.com/77 에서 S3 권한 삽질을 하고, express 이미지 서버와 multer-s3를 활용해서 구현을 하였다.

현재는 카카오 로그인을 한 유저만 5mb 크기 제한의 이미지를 업로드할 수 있다.

 

추후 유저가

자신이 만든 설문지를 삭제하거나,

회원 탈퇴를 하거나,

배포되지 않고 특정 기간 동안 방치되거나

하는 등을 대비해 주기적으로 S3에 업로드된 이미지를 삭제가 필요하지 않을까라는 의견이 나왔고,

그에 대한 솔루션으로 간단하게라도

  • 유저 이름
  • 설문 번호
  • 이미지 URL

이 3가지 정보에 대해 데이터베이스 저장을 택하게 되었다.

 

현재 상황은 이러하다.

  • 테스트 서버는 동일 리전의 다른 vpc에 구성되어 있다.
  • eks 본서버는 동일 리전의 다른 vpc에 구성되어 있다.

여기서 데이터베이스는 AWS RDS 상품을 활용해 테스트 서버와 동일한 리전, vpc에 구성해놓은 상태이며, 보안그룹을 활용해 해당 서버에서만 접근 가능하게 되어있는 상황이다.

 

방법은 크게 2가지 정도를 생각했다.

첫째로는, 본서버용 데이터베이스를 하나 더 생성하기

둘째로는, vpc 피어링을 통해 eks에서도 해당 데이터베이스에 접근할 수 있게 하기

 

AWS vpc에 대해 학습도 해볼겸, 연습도 해볼겸 두번째 방법을 택하게 되었다.

 

진행

크게 3가지 단계로 나누어진다.

첫째는, 두 vpc 대역의 피어링 연결

둘째는, 피어링 연결을 라우팅 테이블에 추가

셋째는, 보안그룹에서 상대 vpc 접근 허용

 

1. 두 vpc 대역의 피어링 연결

AWS 콘솔 → vpc를 클릭한다.

그다음 '피어링 연결' 탭을 클릭한다.

피어링 연결 생성을 클릭하면 아래 창이 뜬다.

여기서 요청자, 수락자는 A → B, B → A 어느 것을 선택해도 상관없다.

생성 이후에 해당 pcx로 시작하는 ID를 클릭하여 상세로 진입한후 우측의 작업탭을 클릭해 요청 수락 을 해준다.

 

2. 피어링 연결을 라우팅 테이블에 추가

AWS 콘솔 → vpc를 클릭한다.

그다음 '라우팅 테이블' 탭을 클릭한다.

각각 vpc 기반의 여러 라우팅 테이블이 보일 것이다.

여기서 라우팅 테이블 ID 를 클릭하여 각각 상대의 VPC/CIDR 등록, 대상은 1번에서 생성된 피어링 연결 ID로 선택해주면 된다.

여기서 나는 노가다를 해주었는데, A vpc의 라우팅 테이블이 5개, B vpc의 라우팅 테이블이 1개 있어서 전부다

A 입장에서는 B의 vpc주소 - 대상: pcx-xxxx

B 입장에서는 A의 vpc주소 - 대상: pcx-xxxx

로 해주었다.

 

3. 보안그룹에서 상대 vpc 접근 허용

그 다음에는 AWS 콘솔에서 EC2 클릭 → 보안 그룹을 클릭한다.

본인의 경우 DB 같은 경우 DB Security Group이라는 보안그룹을 따로 만들어서 기존 테스트 서버 보안그룹을 설정해둔 상태였다.

여기서 다시 인바운드 규칙 편집 을 클릭해 해당 포트에 대한 내 EKS 본서버의 VPC/CIDR을 입력해주었다.

 

결과

잘 연결이 된다!

원래는 RDS 데이터베이스의 퍼블릭 액세스를 막았기 때문에, eks 본서버에서는 해당 데이터베이스에 접근이 불가했는데,

위 과정대로 하니까 정상적으로 접근이 되었다.

 

참고

반응형