웹서비스는 국내뿐만 아니라 해외에도 빠른 연결을 제공해야 합니다. 그러나 데이터를 보관하는 데이터베이스가 국내에만 있을 경우, 해외에서는 Read / Write가 느려질 것입니다. 이 문제를 해결하려면 다른 리전에도 Read Replica를 놓는 등의 조치를 해야합니다. 오늘은 2가지 방법을 통해 해외에도 빠른 Read / Write를 제공해봅시다.
0. 사전 준비
Seoul 리전과 Tokyo 리전에 2개의 public subnet, 2개의 private subnet을 가진 VPC가 생성되어야 합니다.
두 리전 모두 private subnet 2개를 포함하는 subnet group을 생성합니다.
다음 링크를 참고하여 Seoul 리전에 Aurora Database를 생성합니다.
[AWS] Amazon Aurora - RDS DB Engine
RDS의 DB 엔진으로 MySQL, PostgreSQL을 선택해도 되지만, 아마존이 클라우드에 최적화되게 개발하여 성능이 좋은 Aurora를 선택해도 됩니다. 오늘은 DB 엔진 Aurora에 대해 알아봅시다. 1. Aurora MySQL과 Postgr
arcozz.tistory.com
1. Cross Region Read Replica
- MySQL DB의 Binary log(Binlog)를 복제합니다.
- 재해 복구에 유용합니다.
- 해외(다른 리전)에도 빠른 Read(읽기)를 보장합니다.
Cross Region Read Replica를 생성하려면 새로운 Parameter group을 생성하여 binlog_format 옵션을 켜야합니다.
RDS 콘솔의 Parameter groups 메뉴로 가서 Create parameter group을 누릅니다.
Parameter group family로 aurora-mysql8.0을 선택하고, Type은 모든 인스턴스에 적용되도록 DB Cluster Parameter Group을 선택합니다. Group Name과 Description도 지정합니다. 다 설정했으면 Create를 눌러 생성합니다.
생성한 Parameter Group을 선택하고, Actions > Edit을 누릅니다.
Parameter 검색에서 "binlog_format"을 검색합니다. binlog_format의 값을 OFF에서 ROW로 설정합니다.
참고로, binlog_format에는 여러 옵션이 있습니다. 다음 글을 참고하면 좋습니다.
[MySQL] 복제 구성을 위한 바이너리 로깅 형식
개요 MySQL의 복제 데이터 포맷에는 어떤 방식이 있는지 알아보고 간단한 테스트를 통해 유의점을 확인해보겠습니다. 복제 포맷 MySQL의 복제 포맷에는 Statement, Row, Mixed 3가지 형태가 있습니다. Stat
omty.tistory.com
이제 DB 클러스터를 선택하고 Modify를 누릅니다.
Additional configuration에서 DB cluster parameter group을 교체합니다. Continue 버튼을 눌러 진행합니다.
바로 적용하기 위해 Apply immediately를 선택하고, Modify cluster를 누릅니다.
DB Instance Configuration에서 DB cluster parameter group이 Pending reboot 상태가 될 때까지 기다립니다.
DB Instance를 reboot 합니다.
reboot가 완료되면 본격적으로 cross region read replica를 생성합니다.
클러스터를 선택하고, Actions > Create cross-Region read replica를 누릅니다.
몇 가지 옵션만 변경하면 됩니다.
먼저, read replica가 생성될 region과 VPC, subnet group을 선택합니다.
보안 그룹과 AZ도 설정합니다.
Read replica source로 DB Instance를 선택하고, instance와 cluster의 식별자를 각각 설정합니다.
이제 Create를 눌러 cross region read replica를 생성합니다.
조금만 기다리면 Tokyo 리전에 Replica cluster가 생성됩니다.
2. Global Database
- 기본 리전에서 Write가 일어납니다.
- 최대 5개의 보조 읽기 전용 리전을 설정할 수 있으며, 복제 지연이 1초 미만입니다.
- 보조 리전당 최대 16개의 Read Replicas를 설정할 수 있습니다.
- 전 세계의 읽기 워크로드 지연 시간을 줄일 수 있습니다.
- 1초의 RPO(복구 목표 지점)를 보장합니다.
- 1분 미만의 RTO(복구 목표 시간)를 보장합니다.
Global Database는 binlog_format을 변경할 필요가 없습니다. 바로 Global Database를 생성해봅시다.
참고로, DB instance class로 Memory optimized classes를 사용해야 합니다.
클러스터를 선택하고, Actions > Add AWS Region을 누릅니다.
Global database 식별자를 입력하고 보조 리전을 선택합니다.
보조 리전의 VPC와 생성한 DB subnet group을 선택합니다.
보안 그룹과 AZ도 선택해줍니다.
모든 설정이 끝났으면 Add region을 누릅니다.
조금만 기다리면 Global database 생성이 완료됩니다. Global database는 따로 리전 이동을 하지 않아도 볼 수 있습니다.
오늘의 글은 여기까지입니다. 감사합니다!
참고
https://youtu.be/koDIV5QMw38?si=zF-QRQQjhahuL6VK
https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/
'AWS' 카테고리의 다른 글
[AWS] CloudFront with Lambda Function URL (1) | 2023.10.09 |
---|---|
[AWS] Terraform VPC Module 사용 (0) | 2023.10.06 |
[AWS] Amazon Aurora - RDS DB Engine (0) | 2023.10.01 |
[AWS] RDS Read Replicas & Multi AZ (2) | 2023.09.30 |
[AWS] RDS의 개념과 기본 실습 (0) | 2023.09.29 |