[PostgreSQL] Citusdata PG_AUTO_FAILOVER install on PostgreSQL15 (1) - Overview

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)

Single Standby Architecture
Multi Standby Architecture

 

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

 

또한, 해당 문서의 주요 목적은 테스트 환경 구현에 있습니다.

실제 환경에 적용 시 발생할 수 있는 문제에 대해서는 책임질 수 없다는 점 참고 부탁드립니다.

Designed by JB FACTORY