이두잉의 AWS 세상

AWS RDS Failover 매커니즘

2016.01.21 15:09 - leedoing leedoing

안녕하세요. 이두잉입니다.

금일은 RDS의 Failover 매커니즘에 관해 작성하도록 하겠습니다.


RDS를 선택할 때 두 가지 항목이 있습니다. Single AZ와 Multi AZ입니다. 실제 서비스를 한다면 Multi AZ를 사용하세요.

Multi AZ를 사용하신다면 다음과 같은 동작을 합니다. End-Point Domain이 있고 그 뒤로 각각 RDS 인스턴스가 AZ 별로 CNAME처리 되어 있습니다. 

이런 식으로 기존 RDS Active 인스턴스에 H/W Failure, Backup, Maintenance가 발생되면 back-up 인스턴스로 CNAME이 위임되어 Failover가 진행됩니다. 이 때 다운타임은 DNS TTL로 인한 대략 1분정도의 시간이 발생됩니다. 


만약 VM Type 변경을 하신다면 아래 절차로 진행되며, Live에서 CPU 및 IOPS 사용률이 높다면 지연 장애 혹은 Uptime 시간이 길어질 수도 있습니다.

1. Slave 인스턴스에서 Snapshot 생성, 기존 Disk 삭제

2. 신규 Type 변경된 VM 생성

3. 런칭 후 변경된 VM에 Snapshot을 통한 Disk 복구 및 Snapshot 도중 발생된 binlog를 통해 데이터 동기화

4. DNS 처리

Traffic이 Peak일 때 해당 VM Type 변경을 시도하면 Type 변경에 따른 성능저하도 발생될 수 있습니다. 따라서 미리미리 가용성을 확인한 후에 VM Type을 변경해야 합니다.


혹은 Read Replica만 사용 중에 장애가 난다면, Read Replica 모두 Master로 변경되게 됩니다. (Aurora의 경우 우선 순위가 높은 놈, 성능이 높은 놈, 같은 AZ에 있는 놈 등의 순서로 Read Replica가 Master로 승격됩니다.)


1
2
3
4
5
singsing.ckmjbpnt7huf.us-west-1.rds.amazonaws.com. 5 IN CNAME ec2-50-18-218-223.us-west-1.compute.amazonaws.com.
ec2-50-18-218-223.us-west-1.compute.amazonaws.com. 2532 IN A 50.18.218.223
 
Failover!!!!!!!!!!!!

singsing.ckmjbpnt7huf.us-west-1.rds.amazonaws.com. 2 IN CNAME ec2-52-8-196-116.us-west-1.compute.amazonaws.com.
ec2-52-8-196-116.us-west-1.compute.amazonaws.com. 3474 IN A 52.8.196.116
cs


End-Point를 CNAME 처리해서 사용하세요. 새로 RDS를 런칭할 경우 End-Point가 변경되기 때문입니다.

따라서 AWS 사용 시에는 유연성과 확장성을 생각하여 RDS뿐만 아닌 ELB 등의 End-Point에 자체 도메인을 CNAME 처리하는 패턴 디자인을 적용하시기 바랍니다. RDS가 Internal 내에서만 가동되도 가능하면 Route53의 Private DNS를 이용하세요.

그리고 RDS Disk 또한 EBS입니다. EBS는 Failover 다운사이징이 불가합니다. 적당한 사이즈의 EBS를 선택하세요.