Skip to content
On this page

AWS RDS 업그레이드 제로 다운타임 연구

개요

Amazon Aurora MySQL의 3.05 버전에 대한 지원 중단으로 인해 버전 업그레이드를 진행했다. 마이너 버전의 릴리즈만 있으며, RDS 클러스터에는 Blue/Green 배포 설정이 되어 있지 않았다. 해당 상황에서 서비스 영향도가 가장 낮은 방식의 업그레이드를 찾아 진행했다.

1안: 리더 추가 - 페일오버 방식으로 인스턴스 버전 변경

일반적으로 점검 예정인 인스턴스를 교체하는 것과 같은 원리로 리더 인스턴스를 추가한 후, 리더 인스턴스의 마이너 버전을 업그레이드하고 페일오버하여 교체시키는 전략을 생각했으나, 하나의 클러스터에서 일부 인스턴스의 엔진 버전을 변경할 수 없다.

2안: AWS RDS에 Cluster Modify에서 바로 버전 변경

쓰기 인스턴스 단독 구성이나 쓰기 + 읽기 구성 모두 동일하게 다운타임이 발생한다. 읽기 인스턴스에서 먼저 업그레이드되더라도 쓰기 인스턴스가 변경될 때 다운타임이 발생하게 된다. 비어 있는 RDS에 대해 테스트 시 약 2분의 다운타임이 발생했다.

3안: AWS RDS Cluster 에서 블루/그린 배포 설정하며 버전 변경 진행

AWS RDS Console에서 지원하는 기능으로, RDS Blue/Green 배포 설정이 없는 상황에서 필요한 Cluster Parameter를 자동으로 추가하여 RDS Blue/Green 배포가 가능한 클러스터로 변경한 후 버전 변경을 자동으로 진행하는 기능이다.

binlog_format 같은 static parameter에 대한 변경이 필요한 경우 클러스터 재부팅이 요구된다.

엄밀하게 보면 두 번의 다운타임이 발생하지만, 두 번 다 길지 않다.

그리고 Switchover의 경우 앞으로 자주 사용하게 될 텐데, 요청을 바꾸는 과정에서 결국은 다운타임이 생기는 것에 대해서는 주의해야 할 것으로 보인다.

  • Blue DB Instance restarted: 약 20초 다운타임
  • Blue에서 Green으로 Switchover: 약 20초 다운타임

image.png

참고 자료

AWS RDS Blue/Green 배포를 사용한 Switchover 개요

image.png

업그레이드 간 요청 테스트 구조

  • AWS RDS Type: db.t3.medium

image.png