Part II. 아키텍처
pg_auto_failover의 구조는 단순합니다. monitor 하나가 판정하고, 각 노드에서 실행되는 keeper가 그 판정을 수행합니다. 구조는 단순하지만, 판정의 근거와 시점은 모두 monitor와 keeper 사이의 약속에 담겨 있습니다. 이 Part에서는 두 프로세스의 통신 방식을 확인합니다. monitor가 노드를 unhealthy로 판단하는 시점도 살펴봅니다. 동기 복제를 켜고 끄는 조건도 알아봅니다. 기존 primary가 쓰기를 계속 받지 못하게 하는 장치도 소스와 실측으로 확인합니다.
- 2.1 monitor와 keeper:
node_active()프로토콜, 프로세스 트리, LISTEN/NOTIFY 채널 - 2.2 formation, group, node: 관리 단위와 이름 규칙, Citus와의 관계
- 2.3 health check와 unhealthy 판정: monitor GUC 기본값,
IsUnhealthy()조건, 실측 타임라인 - 2.4 synchronous replication 모델:
primary와wait_primary,synchronous_standby_names자동 관리 - 2.5 split brain 방지:
demote_timeout상태,primary_demote_timeout, keeper의 network partition 감지