0. 개요
1) PG_AUTO_FAILOVER 소개
PG_AUTO_FAILOVER 은 citusdata 가 제공하는 PostgreSQL 용 HA Extension 입니다.
PostgreSQL 노드를 Streaming Replication 방식으로 다중화 하고, 장애 발생 시 자동으로 페일오버 되도록 하는 기능을 제공합니다.
해당 Extension 은 네이버클라우드 Cloud DB for PostgreSQL 서비스에도 채택됐을 정도로 안정적인 편이라 볼 수 있습니다.
2) PG_AUTO_FAILOVER 구조
일련의 메커니즘을 구현하기 위해 최소 3개의 노드가 필요합니다.
* Monitor - 각 Node의 keeper process를 이용하여 모니터링 및 제어
* Primary - PostgreSQL 엔진 + keeper process
* Standby - PostgreSQL 엔진 + keeper process / Primary node와 Streaming Replication)
3) 기존 PG_BASEBACKUP 방식과 비교
PostgreSQL 상에서 제공되는 PG_BASEBACKUP을 통해 Streaming Replication 환경을 구성할 수 있습니다.
먼저, Streaming Replication은 WAL(Write Ahead Log)를 거의 실시간으로 Standby node로 전달하게 됩니다.
각 node들이 동일한 데이터를 가지게 되며, node 장애 시 데이터 로스가 최소화 됩니다.
상기의 내용에서 언급했다시피, PG_AUTO_FAILOVER 또한 Streaming Replication을 채택하고 있습니다.
그렇다면 왜 굳이 PG_AUTO_FAILOVER를 사용하는지 설명드리겠습니다.
상기의 그림은 PG_AUTO_FAILOVER 의 구성을 대략적으로 나타낸 것입니다.
보시다시피, Streaming Replication으로 구성된 Primary / Standby 환경까지는 동일합니다.
여기서 주목해야 할 점은 (1) 각 node의 keeper process와 (2) Monitor node 입니다.
(1) 각 node의 keeper process
관리자 입장에서, 기존 Streaming Replication 구성에서는 각 node들의 상태를 확인하기 힘들었습니다.
하지만 PG_AUTO_FAILOVER에서는 각 node에 keeper process가 같이 뜨게 되어 DB의 상태를 체크하게 됩니다.
(2) Monitor node
(1)의 keeper process로 부터 받은 DB의 상태를 한 번에 모니터링 할 수 있습니다.
또한, node에 장애 발생 시 이를 감지하여 auto-failover가 이루어지게 됩니다.
이 또한 기존에서는 볼 수 없던 기능입니다.
4) 정리
PG_AUTO_FAILOVER는 Streaming Replication 방식을 기반으로 하는 auto-failover extension 입니다.
각 노드에 keeper process가 DB 엔진의 상태 체크를 하게 되며, 이러한 정보는 Monitor node로 가게 됩니다.
관리자는 Monitor node를 통해 DB들의 상태를 한 번에 체크할 수 있습니다.
또한 장애 발생 시 신속히 페일오버를 수행할 수 있습니다.
참고사항
Citusdata PG_AUTO_FAILOVER의 저작권 및 라이선스는 아래의 링크를 참고 부탁드립니다.
https://github.com/hapostgres/pg_auto_failover/blob/main/LICENSE
https://github.com/hapostgres/pg_auto_failover/blob/main/NOTICE
또한, 해당 문서의 주요 목적은 테스트 환경 구현에 있습니다.
실제 환경에 적용 시 발생할 수 있는 문제에 대해서는 책임질 수 없다는 점 참고 부탁드립니다.
'PostgreSQL' 카테고리의 다른 글
[PostgreSQL] Citusdata PG_AUTO_FAILOVER install on PostgreSQL15 (3) - Monitor node 구성 (3) | 2023.06.18 |
---|---|
[PostgreSQL] Citusdata PG_AUTO_FAILOVER install on PostgreSQL15 (2) - Node 공통 설정 (6) | 2023.06.18 |
[PostgreSQL] PostgreSQL15 Streaming Replication 구성 (7) | 2023.05.31 |
[PostgreSQL] PostgreSQL15 소스코드 설치(Source Install) (0) | 2023.05.22 |
[PostgreSQL] PostgreSQL15 소스 설치 시 요구사항(Requirements) (0) | 2023.05.22 |