Clustering 란?
Clustering 란?
일반적으로 DB 구조를 보면, DB 서버와 스토리지가 하나씩 구성되어 있다.
![](https://blog.kakaocdn.net/dn/0ooov/btrM0nOgLe5/jEJKOQ5kK9qjyhck8QooY0/img.png)
만약 서버가 제대로 동작하지 않으면 먹통이 된다.
실시간으로 돌아가면서 데이터 손실을 방지하기 위해서 서버를 여러개로 구성 하는 것이다.
이때, DB서버는 서로 다른 인스턴스에서 동작한다. 이 경우 서버 두 대를 하나로 묶어 운영한다.
![](https://blog.kakaocdn.net/dn/csBobm/btrMU6f3eP3/kmznd3L3IRGwmexXKErx6K/img.png)
두 서버 모두 Active 상태이다.
따라서 서버 한 대가 죽더라도 하나가 동작하고 있고 그동안 복구를 하여 서비스 중단이 없도록 할 수 있다.
또한, 하나의 DB 서버에 가해지던 부하도 나눠짐으로써 CPU와 Memory 부하도 줄어들게 되어
성능 및 유지보수가 향상된다.
다만, 여러 개의 서버가 하나의 스토리지를 공유함으로써 병목현상이 발생한다.
이를 해결하기 위해서 ExperDB 에서는
HA ( 고가용성 )
대부분의 DBMS는 이중화 된 두 노드가 Active-Active 또는 Active-Standby로 동작하며
문제 발생 시 Failover를 통해 서비스가 멈추는 사고를 방지
또한 DB에 전달되는 Request들을 분할 처리해 성능 향상과 안정화를 가져올 수 있다.
ExperDB에서는 Active-Standby 형식으로 Standby 노드는 Read만 가능하다
![](https://blog.kakaocdn.net/dn/bRpOyH/btrM6cykGlV/qknTaakBUca7jS0bd9EJW1/img.png)
노드는 클라이언트와 저장소 사이를 연결해주면서, 저장소의 데이터를 읽어 올 수도 작성 할 수도 있다.
Primary 서버의 장애가 발생하여 DBMS 가 중지되면
Write-Ahead Log Shipping(WAL) 를 통해 즉시 Standby 서버가 Primary 로 운영될 수 있다.
또한 이러한 과정에서 복제 및 장애조치를 관리하는 도구가 repmgr 이다.