High Availability for Cloud Computing Database Systems
kth 공통플랫폼팀 이호철 (mystery@paran.com)
클라우드 컴퓨팅 환경에서 DBMS 시스템을 위한 고 가용성 구성방안은 여러 가지가 있다.
원문(http://perspectives.mvdirona.com/2011/11/27/HighAvailabilityForCloudComputingDatabaseSystems.aspx)에서와 같이 Zen 시스템의 일부인 Remus 로 구성한 방안이 있으나, 전통적인 방법과 문서에서 설명하는 Zen의 Remus 방안 그리고, AWS환경에서 HA구조로 설명하도록 하겠다.
고가용성(High Availability)은 당연한 것이다. 사용자는 아무리 심플한 데이터베이스 어플리케이션이라고 해도 24시간 서비스 되길 원한다.
HA 제공하기 위한 중요 사항은 세 가지로 압축될 수 있다.
- 어떤 장애에 직면하더라도 데이터베이스는 계속 유지 될 수 있어야 한다.
- HA 구성이 되더라도 성능에 영향은 최소화 되어야 한다.
- 복잡성과 관리 오버헤드가 적어야 한다.
현재 많이 제공 되어지는 HA 솔루션들은 복잡하고 비싸다. 따라서, 간단하고 싼 비용의 HA 솔루션을 제공하고자 하는 것이 RemusDB의 목표라 할 수 있겠다.
1. Active/Standby Replication
o 개요

- 일반적으로 구성하는 Active/Standby Replication 구조
- 두 개의 서버 Primary, Backup 서버에 복사 저장됨
- Primary 서버가 Client의 Request를 받아들이고, DB작업을 수행
- DB 변경사항을 Transaction Log 를 통해 Backup 서버로 전달
- 장애 시 Backup서버가 Primary 서버로 수행됨
o 이슈
- DBMS 구현단에서 복잡하여, 관리 작업 또한 복잡함
- 장애시 백업서버로 Client의 Request 변경이 필요함
- 장애시 수분 이상의 다운타임이 존재함
2. Transparent HA : RemusDB
o 개요

- Virtualization Layer(VM) 상에 DBMS를 구성한 HA 구조, 즉 가상화를 사용한 고가용성의 DBMS 구성 방안
- Zen 시스템의 일부인 Remus로 구성한 방안
- 정기적으로 Checkpointing을 사용하여 VM상태의 모든 변경사항을 전달
- DBMS 변경을 위한 코드 변경 없음
- 장애시 수 초간의 다운타임이 존재함
o 구조
1) checkpoints

- 정기적으로 Checkpoint 수행함 : ~25ms 단위
- 하나의 영구적인 큰 버퍼(domain0) 필요로 함
- 장애 시 마지막 체크포인트 시점부터 백업서버가 수행함. 따라서 마지막 체크포인트와 장애시점 이후 부분은 잃음
2) Optimizations
- Memory 최적화 : 비동기 체크포인트 압축, Disk Read 추적 등을 통한 메모리 최적화, 즉 변경된 페이지만 전송하며, 그것들은 압축하여 전송함
- Network 최적화 : 모든 나가는 패킷에 대해 버퍼링을 함으로써, 클라이언트에 안전하지 않은 결과를 보여주지 않음을 보장함(단, 왕복 지연은 발생함)
o RemusDB의 장점
- 클라이언트 코드 변경 없이 DBMS의 HA 구조 사용
- 장애 시 백업시스템으로부터 자동적이고 완전한 변경 가능
3. AWS RDS HA
o 개요

- AWS(Amazon Web Services)에서 제공하는 데이터 베이스 서비스인 RDS(Relational Database Service)에서 제공하는 Multi-AZ Deployments를 활용하면, HA 구조를 쉽게 사용 가능
- Primary 서버와 Standby 서버는 서로 다른 가용존(Availability Zone : 별도 IDC로 보면 됨)에 위치함
- Primary, Standby간의 동기화는 Amazon 에서 보장하므로, 사용자들의 관리,운영이슈 없음
- Client Code 변경 없이 장애 발생시 자동으로 Standby 서버로 이전
o 비고
- Standby 서버는 항상 대기 중이며, 서버 사용 비용은 항상 두 배가 듬
현재 사용하는 주요 DBMS인 MySQL의 경우 HA가 적용되어 있지 않음. RemusDB와 같은 솔루션이 필요하며, AWS상의 서비스일 경우 주요한 DBMS의 경우 Multi-AZ Deployments를 적용하여 HA 적용이 필요함

