[AWS] Amazon Aurora & Auto Scaling

01. Amazon RDS?

Amazon Relational Database Service

  • 관계형 데이터베이스를 더욱 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스.
  • 경제적이고 크기 조절이 가능한 용량을 제공하고 공통 데이터베이스 관리 작업을 관리합니다.

Amazon EC2 VS Amazon RDS

 

Amazon  RDS 특이점

  • 백업, 소프트웨어 패치, 자동 장애 감지 및 복구를 관리합니다.
  • 자동화된 백업을 설정하거나 고유한 백업 스냅샷을 수동으로 생성할 수 있고 복원도 할 수 있습니다.
  • 기본 인스턴스 및 문제 발생 시 장애 조치를 수행할 수 있는 동기식 보조 인스턴스가 있어 가용성을 높일 수 있습니다.
  • 읽기 전용 복제본을 사용하여 읽기 조정을 높일 수도 있습니다.

RDS 선택 가능한 엔진

 

02. Amazon Aurora?

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

  • 고급 상용 데이터베이스의 속도와 안정성을 오픈 소스 데이터베이스의 단순성 및 비용 효율성과 결합 하였습니다.
  • 기존 애플리케이션을 거이 변경 없이 MySQL 기준 최대 5배, PostgreSQL 기준 최대 3배 성능향상 가능합니다.
  • 고성능 스토리지 하위시스템이 포함되며 클러스터 볼륨 크기는 최대 128TiB까지 증가할 수 있습니다.
  • 구성 및 관리의 어려운 측면 중 하나인 데이터베이스 클러스터링 및 복제를 자동화하고 표준화 합니다.
Amazon Aurora DB 클러스터

리전 및 가용 영역

  • 리전은 다른 AWS 리전에서 격리되도록 설계되었습니다. 이를 통해 가장 강력한 내결함성 및 안정성을 달성할 수 있습니다.
  • 가용 영역은 지정된 AWS 리전에 격리된 위치입니다.
  • 각 Aurora DB 클러스터는 스토리지 복사본을 3개의 개별 AZ에 호스팅합니다.
스토리지
 
  • SSD(Solid State Drive)를 사용하는 단일 가상 볼륨인 클러스터 볼륨에 저장합니다.
  • 클러스터 볼륨은 동일한 AWS 리전에 속한 세 가용 영역의 데이터 사본으로 구성되어 있습니다.
  • 가용 영역에서 데이터가 자동으로 복제되기 때문에 데이터 손실 가능성 줄어 오히려 내구성이 크게 높아집니다.
  • 데이터 용량이 늘어날수록 클러스터 볼륨도 자동 확장됩니다.
  • 최대 확장 가능한 용량은 DB엔진 버전에 따라 128 테라 또는 64 테라입니다.
  • 3개의 가용 영역에 여러 개의 복사본을 보관하고 있기 때문에 디스크 결함으로 인한 데이터 손실 가능성이 최소화됩니다.

데이터의 고가용성 (High-Availability, 정상적인 사용)

  • 기본 DB 인스턴스에 데이터가 기록되면 Aurora에서 가용영역의 데이터를 볼륨과 연결된 6개의 스토리지 노드에 동기적으로 복제합니다.
  • 이 방법은 데이터 중복을 제공하고, I/O 중지를 없애고, 시스템 백업 중에 지연 시간 스파이크를 최소화합니다.

인스턴스의 고가용성

  • 단일 마스터 복제를 사용하는 클러스터의 경우 기본 인스턴스를 생성한 후 최대 15개의 일기 전용 복제본을 생성할 수 있습니다.
  • 일상적인 작업 중에 리더 인스턴스에서 SELECT 쿼리를 처리하여 읽기 집약적 응용 프로그램의 일부 작업을 오프로드 할 수 있습니다.
  • 기본 인스턴스에 문제가 발생시 리더 인스턴스 중 하나가 기본 인스턴스 역할을 인수합니다. (FailOver)

클러스터의 내결함성 (Fault Tolerance, 운영 유지)

  • 클러스터 볼륨은 단일 AWS 리전에 속하는 다중 가용 영역을 모두 아우르는 의미 입니다.
  • 각 가용 영역에는 클러스터 볼륨 데이터 사본이 복사됩니다.
  • 단일 마스터 복제를 사용하는 인스턴스에 결함이 발생하면 아래 2가지 방법 중 하나를 선택하여 자동 장애 조치합니다.
  • 기존 Aurora 복제본을 새 기본 인스턴스로 승격 OR 새로운 기본 인스턴스 만들기
03. RDS 용 VPC 생성
 
VPC 구성도
 
 VPC 구성
 

 

 

서브넷 구성

  • 3개 서브넷 구성
  • ID-sn_a,  ap-northeast-2a,  10.0.1.0/24
  • ID-sn_b,  ap-northeast-2b,  10.0.2.0/24
  • ID-sn_c,  ap-northeast-2c,  10.0.3.0/24

라우팅 테이블에 서브넷 연결

인터넷 게이트웨어 생성 및 VPC에 연결

 

라우팅 테이블에 인터넷 게이트 웨어 추가

보안 그룹 생성

 

04. RDS 생성

서브넷 그룹생성

Aurora PostgreSQL  엔진 설정

 

05.  SQL Tool 이용 접속 확인

 

 

 

06. Auto Scaling?

Aurora Auto Scaling

  • 단일 마스터 복제를 사용해 Aurora DB 클러스터에 대해 프로비저닝된 Aurora 복제본 수를 동적으로 조정 합니다.
  • MySQL, PostgreSQL 모두 사용 가능합니다.
  • Aurora DB 클러스터를 활성화하여 연결 또는 워크로드의 갑작스로운 증가를 처리합니다.
  • 워크로드가 감소하면 사용하지 않는 프로비저닝된 DB 인스턴스에 대해 불필요한 Aurora 복제본을 제거합니다.
 시작하기 전에
  • Aurora Auto Scaling을 사용하려면 먼저 기본 인스턴스와 적어도 하나의 Aurora 복제본이 있는 Aurora DB 클러스터를 생성해야 합니다.
  • DB 클러스터에 있는 모든 Aurora 복제본이 사용 가능한 상태일 경우에만 Auto Scaling이 DB 클러스터의 크기를 조절합니다.
  • 새로운 Aurora 복제본을 추가할 때 새로운 Aurora 복제본은 기본 인스턴스에 사용되는 것과 동일한 DB 인스턴스 클래스 입니다.
  • 애플리케이션에서 새로운 Aurora 복제본과의 연결을 지원해야 하며 이렇게 하려면 Aurora 리더 엔드포인트를 사용하는 것이 좋습니다.
Auto Scaling 구성하기
 
 
 
 
07.  Auto Scaling 작동 확인
 
JMeter 이용한 SQL 부하주기
 
SQL 부하로 인한 Auto Scaling 확인
 
 
 
 

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다