데이터베이스/데이터베이스

데이터베이스(데이터베이스(DB)-클러스터링(Clustering))

benjykim 2017. 8. 18. 19:01
반응형

* 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가 '죽었다'는 것을 알 수 있다.









*이 포스트는 '데이터베이스 첫걸음'책을 참고하여 작성했습니다.

반응형