클러스터링
Last updated
Last updated
DB 서버는 데이터를 보존하는 '영속(Persistence) 계층'이기 때문에 클러스터링을 위해 고민해야 할 부분이 많다.
데이터베이스는 대량의 데이터를 영구적으로 보존해야 하고 그에 따른 성능도 요구되기 때문에 데이터를 보존하는 매체에 필요한 요건이 높다. 일반적으로 서버 내부의 로컬 저장소나 메모리로는 이런 요건을 충족시키지 못하기 때문에 전용의 외부 저장소를 사용한다. 결국, DB 서버와의 아키텍처는 저장소와 묶어서 생각해야 한다.
데이터는 항상 갱신되기 때문에 다중화를 유지하는 중에 '데이터 정합성'도 중요하게 의식해야 한다.
가장 간단한 다중화 구성은 DB 서버만을 다중화하고 저장소는 하나만 두는 구성이다. 이 구조는 데이터가 보존되는 저장소가 1개라서 정합성을 신경 쓸 필요가 없고 데이터베이스가 저장소를 제대로 관리하고 있다.
위 그림과 같이, DB 서버가 2대 있지만, 모두 동시에 동작하는 것을 허락할 지에 따라 'Active-Active'와 'Active-Standby' 로 구분한다.
Active-Active : 클러스터를 구성하는 컴포넌트를 동시에 가동한다.
Active-Standby : 클러스터를 구성하는 컴포넌트 중 실제 가동하는 것은 Active, 남은 것은 대기(Standby) 하고 있는다.
Active-Active 구성은 두 가지 장점이 있다.
시스템 타운 시간이 짧다.
성능이 좋다.
Active-Active 의 경우 복수의 서버가 동시에 동작하고 있어서 한 대가 다운되어 동작 불능이 되도 남은 서버가 처리를 계속해 시스템 전체가 정지하는 것을 방지할 수 있다.
DB 서버 대수가 증가하면 동시에 가동하는 CPU 나 메모리도 증가하기 때문에 성능도 향상될 수 있다. 단, 저장소가 병목(버틀넥)이 되기 때문에 생각한 만큼 성능이 향상되지 않는 경우도 있다.
Active-Standby 구성에서는 보통 Standby 상태의 DB 서버는 사용되지 않다가 Active DB 서버에서 장애가 일어날 때만 사용된다. 이 때문에 전화될 때까지 시차가 생기고 그 사이 시스템은 서비스를 계속하는 것이 불가능한 상태(다운 상태)가 된다.
Heartbeat
Active-Standby 구성에서 Standby DB 서버는 일정 간격으로 Active DB 서버에 이상이 없는 지 조사하기 위한 통신하는 것 'Heartbeat' 라고 한다.
Active-Standby 구성은 'Cold-Standby' 와 'Hot-Standby' 로 구분된다.
Cold-Standby : 평소에는 Standby DB가 작동하지 않다가 Active DB가 다운된 시점에 작동하는 구성
Hot-Standby : 평소에도 Standby DB가 작동하는 구성
Hot-Standby 가 전환 시간은 짧지만, 그 만큼 라이선스료가 높게 설정된다.
각 구성의 가용성과 성능이 좋은 순서는 다음과 같다.
Active-Active
Active-Standby (Hot-Standby)
Active-Standby (Cold-Standby)