* DB서버의 다중화(클러스터링)
* DB 서버는 다중화
: DB 서버는 다중화에서 특유의 어려운 문제점을 안고 있다. 그 때문에 DB 서버는 오랫동안
클러스터링이 어려운 컴포넌트로 인식됐다. 현재도 다양한 노력으로 방법이 고안되고 있지만,
간단히 병렬화해서 대수를 증가시키는 웹서버나 애플리케이션 서버와 비교하면
다중화에 대해 고민해야 할 부분이 많다. 그 이유는 DB 서버가 데이터를 보존하는 '영속 계층'이기 때문이다.
* DB와 다른 서버의 차이
: 데이터베이스는 웹 서버나 애플리케이션 서버와 다르게 데이터를 장기간 보존하는 매체가 필요하다.
웹 서버나 애플리케이션 서버는 데이터를 일시적으로 처리하지만 데이터베이스는 대량의 데이터를
영구적으로 보존해야 하고 그에 따른 성능도 요구되기 때문에 데이터를 보존하는 매체에 필요한 요건이 높다.
-> 일반적으로 서버 내주의 로컬 저장소나 메모리로는 이런 요건을 충족시키지 못하기 때문에 전용의
외부 저장소를 사용해야 한다. 결국 DB 서버의 아키텍처는 저장소와 묶어서 생각해야 한다.
* 가장 기본적인 다중화
: DB 서버만을 다중화하고 저장소는 하나만 두는 구성. 이 경우 데이터가 보존되는 저장소가 1개라서
정합성을 신경 쓸 필요가 없다. (정합성 = 데이터 무결성(data integrity))
-> DB 서버가 2대 있지만, 이 2대가 동시에 동작하는 것을 허락할지에 따라 'Active-Active'와 'Active-Standby'로 나뉜다.
- Active-Active : 클러스터를 구성하는 컴포넌트를 동시에 가동한다.
- Active-Standby : 클러스터를 구성하는 컴포넌트 중 실제 가동하는 것은 Active, 남은 것은 대기(Standby)하고 있는다.
* Active-Active 구성의 장점
1) 시스템 다운 시간이 짧다.
-> 복수의 DB서버가 동시에 동작하고 있어서 한 대가 다운되어 동작 불능이되도 남은 서버가 처리를 계속한다.
즉, 시스템이 정지하는 것을 방지할 수 있다.
(이것은 웹 서버나 애플리케이션 서버의 클러스터링으로 얻을 수 있는 장점과 같다.)
2) 성능이 좋다.
-> DB 서버 대수가 증가하면 동시에 가동하는 CPU나 메모리도 증가하기 때문에 성능도 향상될 수 있다.
단, 저장소가 병목(버틀넥)이 되기 때문에 생각한 만큼 성능이 향상되지 않는 경우도 있다.
* Active-Standby 구성의 종류
1) Cold-Standby : 평소에는 Standby DB가 작동하지 않다가 Active DB가 다운된 시점에 작동하는 구성.
2) Hot-Standby : 평소에도 Standby DB가 작동하는 구성.
(Hot-Standby 쪽이 전환 시간이 짧지만, 그만큼 라이센스료가 높다.)
Q. Active-Standby 구성에서 장애가 일어났을 때 Standby DB 서버는 어떻게 Active DB 서버에 장애가 일어난 것을 알 수 있을까?
A. Standby DB 서버는 일정 간격으로 Active DB에 이상이 없는지를 조사하기 위한 통신을 하고 있다.
이 통신을 'Heartbeat'라고 한다. Active DB에 장애가 발생하면 이 신호가 끊기기 때문에
Standby 측은 Active가 '죽었다'는 것을 알 수 있다.
*이 포스트는 '데이터베이스 첫걸음'책을 참고하여 작성했습니다.
'데이터베이스 > 데이터베이스' 카테고리의 다른 글
데이터베이스(데이터베이스(DB)의 아키텍처-Shared Disk & Shared Nothing) (0) | 2017.08.22 |
---|---|
데이터베이스(데이버베이스(DB)의 아키텍처-리플리케이션) (1) | 2017.08.22 |
데이터베이스(데이터베이스(DB)의 아키텍처-가용성과 확장성의 확보) (0) | 2017.08.18 |
데이터베이스(데이터베이스(DB)의 아키텍처-역사와 개요) (0) | 2017.08.17 |
데이터베이스(데이터베이스(DB)의 운영비용) (0) | 2017.08.15 |