[AWS] Amazon VPC 인프라에 데이터베이스 계층 생성

vinca·2023년 11월 28일
0

Introduction

본 실습 과정은 AWS Training and Certification을 바탕으로 작성되었습니다.


사례

다음과 같은 구조를 생성해보자.

Amazon RDS 데이터베이스 생성

먼저 RDS 데이터베이스로 Aurora DB 클러스터를 생성한다.

🌠Aurora DB
MySQL 및 PostgreSQL과 호환되는 완전관리형 관계형 데이터베이스 엔진

Aurora DB는 하나 이상의 DB 인스턴스와 해당 DB 인스턴스에 대한 데이터를 관리하는 클러스터 볼륨으로 구성된다.

  • 버전 선택
    버전을 선택하고, 개발/테스트 모드로 생성하자.

  • 기본 정보 입력
    아래와 같이 기본적인 DB의 정보를 입력해준다.

    • DB cluster identifier : aurora
      • Master username : dbadmin
      • Master password : BUbyXTS16HKx
  • DB instance class 선택
    "Burstable"은 가변적인 CPU 성능을 의미한다.
    가격이 저렴한 T 인스턴스 종류가 포함되어있다.

VPC 및 DB subnet group 지정

VPC 및 VPC에 해당되는 DB 서브넷 그룹을 지정해 주자.
이 DB 서브넷 그룹의 역할은 RDS가 배포될 때의 어떤 서브넷을 기준으로 배포될 지를 결정한다.

현재 labdbsubnetgroup에는 2개의 AZ에 각각 하나씩 프라이빗 서브넷이 위치한 것을 확인할 수 있다.
즉, labdbsubnetgroup은 프라이빗 서브넷 2개를 가지고 있다.

이처럼 RDS는 특성상 최소 2개 이상의 가용영역(AZ)를 두어야 하므로, 실제 배포되는 RDS 서버가 1개더라도 이처럼 DB 서브넷 그룹에는 2개 이상의 서브넷이 들어간다.

Availability Zone (서브넷 선택)

서브넷에서 RDS를 배포할 서브넷을 선택할 수 있다.
분명히 서브넷 단위로 현재 배포되는 것인데 왜 Availability Zone 단위로 나오는지 모르겠다. (더 헷갈리게..)

만일 다중 가용영역 배포가 체크되어있다면, 이 경우 어디에 배포할 지 선택하는 Availability Zone의 선택창 자체가 없다. (여러 가용영역에 복제되어 배포되기 때문)

  • VPC security groups 설정
    보안 그룹으로는 기존 생성되어 있는 LabDBSecurityGroup를 사용한다.

  • Monitoring(모니터링)
    ✅ Enable Enhanced monitoring을 선택 취소한다.

데이터 베이스 이름 및 DB 클러스터 파라메터 그룹 설정

드롭다운 메뉴에서 올바른 DB cluster parameter group 값을 선택해야 합니다. 잘못된 값을 선택하면 데이터베이스 복제본을 구축할 때 오류가 발생합니다.

Application Load Balancer 생성 및 구성

Application Load Balancer를 생성하여 웹에서 애플리케이션으로 액세스 할 수 있도록 하자.

Amazon EC2 콘솔로 이동하여 기존 Amazon VPC 인프라에 Application Load Balancer를 생성하고 프라이빗 EC2 인스턴스를 대상으로 추가한다.

로드 밸런서를 구성하려면 대상 그룹을 생성한 다음 대상 그룹에 대상(여기서는 인스턴스)들을 등로개 주어야한다.

대상 그룹 생성

먼저 대상 그룹부터 생성해보자.

인스턴스에 대해서 로드밸런싱을 수행할 것이므로 인스턴스를 체크해준다.

  • Choose a target type : Instances를 선택
  • Target group name : ALBTargetGroup을 입력
  • VPC : 드롭다운 메뉴에서 LabVPC를 선택

정보를 입력하고 다음 버튼을 누르면 Register targets 창이 나온다. 타겟을 실제로 등록하는 부분이다.

VPC의 프라이빗 서브넷 2개에 위치한 각각의 인스턴스가 출력되는 것을 확인할 수 있다. 이를 둘 다 등록해주도록 하자.

Application Load Balancer 생성

로드밸런서가 위치할 VPC 및 가용영역을 지정하자.
VPC 내 각각의 가용 영역에 있는 퍼블릭 서브넷 2개를 모두 선택한다.

퍼블릭 서브넷만이 인터넷 게이트웨이로의 경로를 가지고 있으므로 ALB를 퍼블릭 서브넷에 위치시켜야 만이 웹을 통해 접근이 가능하다.

😵 2개를 선택하면 ALB가 2개?
그렇다. 네트워크 매핑에서 여러 개의 퍼블릭 서브넷을 선택하면, 선택한 각 서브넷에 대해 ALB의 노드가 생성된다.
단, 이는 사용자에게는 하나의 ALB로 보인다.
공식 문서

  • 보안 그룹 설정
    보안 그룹으로 LabALBSecurityGroup를 설정한다.

  • Listeners and routing 규칙 설정
    80번 포트로 들어오는 트래픽에 대해서는 ALBTargetGroup으로 트래픽이 전송되도록 만들어준다.

콘솔을 통해 Amazon RDS DB 인스턴스 메타데이터 검토

배포된 Application Load Balancer의 DNS 주소로 접속해 보도록 하자.

인터넷 접속

인터넷을 통해서 접속해보면 다음과 같이 잘 접속되는 것을 확인할 수 있다.

RDS DB 접속

이제 여기서 Settings를 열고 데이터베이스에 접속할 수 있는 주소(엔드포인트) 및 기존 생성 시 설정했던 정보들을 입력해 주자.

  • 엔드포인트에서 Writer 권한이 있는 쪽의 주소를 복하자.
  • 생성 시 입력했던 정보들을 함께 입력
    • Endpoint : aurora.cluster-ceh9rnhnzscr.us-east-1.rds.amazonaws.com
    • Database : inventory
    • Username : dbadmin
    • Password : BUbyXTS16HKx

접속 결과

다음과 같이 DB의 스키마에 접근할 수 있다.

Aurora 데이터베이스 클러스터의 쓰기(Writer) 엔드포인트로 접속했으므로, 쓰기 작업(데이터의 삽입, 갱신, 삭제 등)이 가능하다.

✅ 만약 읽기(Reader)로 접속 시 쓰기 작업이 불가능하다.
(근데 사실 권한을 개판으로 줘놨는지, 생성만 안되고 삭제랑 수정은 잘되더라..)

보안 그룹 비교

profile
붉은 배 오색 딱다구리 개발자 🦃Cloud & DevOps

0개의 댓글