미스터 역마살

AWS 네트워크 #08 - RDS (1/2) 본문

IT/AWS

AWS 네트워크 #08 - RDS (1/2)

Mr. YeokMaSsal 2021. 7. 27. 23:55
728x90
반응형

이전 이야기

AWS 네트워크 #01 - VPC

AWS 네트워크 #02 - Subnet

AWS 네트워크 #03 - ROUTE TABLE, NAT GATEWAY

AWS 네트워크 #04 - Security Group

AWS 네트워크 #05 - EC2 생성 (Batstion host, private ec2)

AWS 네트워크 #06 - bastion host를 통한 private ec2 접속

AWS 네트워크 #07 - ELB

RDS란?

RDS는 Amazon Relational Database Service로 클라우드에서 관계형 데이터베이스를 간편하게 사용할 수 있도록 아마존에서 관리하는 서비스를 말한다. 간단한 클릭 몇번으로 DB를 설치 할 수 있으며, 하드웨어 프로비저닝, DB설정, 패치, 백업과 같은 관리를 아마존에서 자동으로 해주기 때문에 사용자는 Application 개발에 집중할 수 있게 해준다.

RDS의 내부 구조는 EC2와 EBS로 구성되어있다. 따라서 우리가 RDS 생성시 EC2의 타입과 EBS의 용량을 설정할 수 있게 된다.

RDS의 특징

사용자는 시스템 권한을 가질 수 없다.

RDS는 SYS권한을 AWS에서 가지고 있다. 따라서 우리가 일반적으로 DB를 설치하고 최상위 권한인 SYS계정으로 접속이 가능하지만 RDS는 SYS 계정으로 접속이 불가능하다. 따라서 SYS계정이 수행하는 작업은 AWS가 제공하는 API를 통해서만 사용이 가능하고 직접적으로 사용자가 쿼리를 날리거나 명령문을 수행시킬수 없다.
(예를 들어 RDS에서는 ALTER DATABASE 쿼리를 날릴수 없다. AWS에서 제공하는 API(프로시저)를 이용해야 한다.)
그리고 시스템 권한이 없기때문에 db 파라미터 설정을 명령어로 할 수 없으며 AWS 콘솔에서 GUI를 통해서만 파라미터 설정이 가능하다.

모니터링을 손쉽게 할 수 있음

AWS의 Cloudwatch라는 기능을 통해 RDS의 모니터링이 가능하다.
DB에서 발새하는 여러 로그(Error Log, General Log등)를 Cloudwatch를 통해 확인 할 수 있다. 그리고 업데이트의 경우 마이너 버전 엔진 업데이트는 자동으로 업데이트 설정이 가능하다. 기타 업데이트의 경우 점검시간(Maintenace Window)을 설정 하여 특정시간에 업데이트가 이루어질 수 있도록 설정 가능하다.

MULTI-AZ

RDS에서는 아주 손쉽게 HA 구성을 할 수 있다. 바로 MULTI-AZ 기능인데 이 기능은 DB의 이중화 구성을 하는 것으로RDS 생성 시 RDS가 위치하게 될 서브넷 그룹을 설정 하게 된다. 이때 서브넷 그룹은 서로 다른 Availibily Zone에 위치하게끔 설정 하고 이렇게 설정한 서브넷 그룹에 RDS의 Primary와 Standby가 위치하게 된다. 
따라서 평상시에는 Primary가 db서비스를 제공하고 있으며 Primary와 Standby는 Sync형태로 동기화를 지속적으로 진행 한다. 그리고 장애가 발생하거나 db문제가 생길 경우 Standby를 Primary로 변경키는 FAILOVER를 AWS에서 자동으로 진행 해주게 된다. 
RDS는 기본적으로 엔드포인트라는 DNS를 이용하기 때문에 FAILOVER시에도 Application에서의 작업은 필요하지 않다. 엔드포인트는 FAILOVER의 경우도 그대로 유지되기 때문이다. 그리고 유저가 Standby db로는 접근이 불가능 하다.

Failover시 Failover의 처리 절차는 아래와 같다.

  1. Stand-by 서버에서 동기화 된 데이터를 통해 Primary로 전환
  2. 기존 Primary에서 Disk 삭제
  3. 변경된 Primary에서 스냅샷 생성
  4. Snapshot을 통한 데이터 복구 후 변경 분은 binlog를 통해 동기화

지원하는 DBMS
  • MS SQL
  • ORACLE
  • MY SQL
  • POSTGRESQL
  • MARIA DB
  • Amazon Aurora
백업

RDS는 총 2가지의 백업 기능을 제공한다.

1. 자동 백업

  • 매일마다 스냅샷을 만들고 트랜잭션 로그를 저장
  • 데이터는 S3에 저장되며 DB 크기만큼의 공간을 점유함
  • 저장된 데이터를 바탕으로 일정 기간 내의 특정시간으로 롤백 가능
  • 1~35일까지 보관을 지원
  • 기본적으로 자동백업 사용상태로 설정 되어 있음

2. 수동 백업

  • 유저, 혹은 다른 프로세스로 부터 요청에 따라 만들어지는 스냅샷
  • DB가 삭제된 이후에도 계속 보관 할 수 있음
  • 스냅샷의 복구는 항상 새로운 DB Instance를 생성하여 수행
읽기전용 복제본(Replication)
  • 원래 데이터베이스의 읽기전용 복제본을 생성한다.(db 동기화는 async방식으로 진행한다.)
    쓰기는 원본 db에 하고 읽기는 복제본에 처리하여 RDS의 부하를 줄여 줄 수 있다.
  • 최대 5개까지 복제본 생성이 가능하다.
  • 각각의 복제본에는 고유 DNS가 할당 되어 접근이 가능하다.
  • 원본 DB 장애 발생시 수동으로 DNS변경이 필요하다.
  • 복제본 자체에 MULIT-AZ설정 가능하다.
  • 자동 백업이 활성화 되어 있어야 읽기 전용 복재본 생성이 가능하다.

 

RDS 생성

 RDS 서비스로 이동

AWS 콘솔에서 RDS를 검색하여 해당 서비스로 이동한다.

 

서브넷 그룹 생성

RDS를 생성할땐 서브넷그룹을 먼저 생성 해주어야 한다. MULTI-AZ기능을 위해서다.
각기 다른 서브넷을 그룹으로 묶어 설정하게 되면 Primary와 Standby db가 해당 서브넷들에 위치하게 되어 Primary 장애 발생시 FAILOVER를 진행하게 해준다. 따라서 서브넷 그룹은 서브넷들이 서로다른 AZ에 위치하도록 해야한다.

RDS 기능에서 서브넷그룹을 선택하고 DB서브넷 그룹 생성 버튼을 클릭한다.
서브넷그룹의 정보는 아래와 같이 입력한다.

  • VPC : test용도로 설정해둔 test-vpc를 선택한다.
  • 가용영역 : 우리가 이전시간들에 걸쳐 만든 서브넷들이 위치한 가용영역 2개(2a, 2c)를 선택한다.
  • 서브넷 : RDS를 위해 test-rds-private-subnet-01, test-rds-private-subnet-02를 private 망에 생성해두었기 때문에 해당 서브넷 2개를 선택한다.

그럼 이렇게 서브넷 그룹이 만들어 진것을 확인 할 수 있다.

 

데이터베이스 생성

그럼 이제 데이터베이스를 생성 해보자
데이터베이스 메뉴에서 데이터베이스생성 버튼을 클릭한다.

그런다음 데이터베이스 설정은 아래와 같이 진행한다. 물론 설정은 본인이 하고싶은대로 해도 무방하다.

  • 엔진유형 : MySQL
  • 버전 8.0.25
  • 템플릿 : 개발/테스트 (프로덕션이나 개발 버전에서만 MULTI-AZ기능을 지원함)
  • DB 인스턴스 식별자 ; mydb 입력
  • 마스터 암호 : 각자 알아서 입력
  • DB 인스턴스 클래스 : t3 small
  • 스토리지 : 마그네틱
  • 다중 AZ배포 : 대기 인스턴스 생성(Primary, Standby 구조로 한다는 의미)
  • VPC : test-vpc 선택
  • 서브넷 그룹 : 생성해두었던 test-rds-subnet-grp 선택
  • 보안그룹 : 기존에 만들어 두었던 test-rds-private-sg 선택
  • 추가구성 초기 데이터베이스 이름 : testdb
  • 자동백업활성화 체크 해제
  • 데이터 베이스 생성 클릭

 

여기까지 완료 되었다면 이제 AWS가 RDS 생성을 시작할 것이다. 아마 DB에 따라 다르겠지만 MYSQL을 생성 했기때문에 5~30분정도면 생성이 될 것이다.

 

 

마지막

이번시간에는 RDS가 무엇인지 알아봤고 생성까지 하였으며, 다음시간에는 RDS를 db접속 툴인 DBeaver로의 접속과 MULTI-AZ의 FAILOVER 기능을 테스트 해보겠다.

 

 

 

728x90
Comments