PostgreSQL 11 + Repmgr + Keepalived로 이중화 구현

2021. 11. 23. 15:16IT/데이터베이스

요약 : 

Psql 11.11 DB서버 2대를 VIP로 묶고, Apache Tomcat은 VIP만 본다.

repmgr는 Primary와 Secondary DB의 역할 변경은 가능하지만, Tomcat이 바뀐 Primary DB를 보게 하진 않는다.

repmgr에서 promote 동작 시 특정 위치의 스크립트를 호출해 VIP를 다른 DB서버로 변경해주는 건 가능하다.

Primary에 장애 발생시 자동으로 Secondary로 연결되도록 설정해 고가용성을 유지한다.

 

1. 양 DB 서버에 SSH 설정

 

2. REPMGR 설치 및 설정 

switchover나 failover 발생 시 vip를 변경해주는 Script가 실행되도록

event_notification_command, event_notifications로 제어한다.

ssh_option도 설정해준다.

 

event_notifications='standby_promote' 

:Standby가 promote 될 때

event_notification_command='스크립트 동작 명령어'

:해당 스크립트를 동작 시킨다

스크립트는 SSH를 통해 장애가 발생한 DB서버의 VIP를 지우고,

반대편 DB서버에 VIP를 심어주는 역할

 

* Switchover : 장애 발생 시 예비시스템으로 수동전환 

* Failover : 장애 발새 시 예비시스템으로 자동전환

* Failback : Failover 전으로 상황을 되돌림 

 

3. failover 스크립트 작성

#2번 DB서버의 경우, PEER='1번 DB서버 IP'

#1번 DB서버의 경우, PEER='2번 DB서버 IP'

 

예시:

sudo /sbin/ip addr add VIP dev '장치명'

sudo arping -c 4 -A -I '장치명' 'VIP'

ssh -q -o ConnectTimeout=3 $PEER "sudo /sbin/ip addr del VIP dev 장치명"

 

:

Standby가 promote되기 전에 VIP를 자신의 장치에 입력.

ARPING으로 VIP로 통신되는지 확인 후,  상대방 장치에서 VIP를 지워서

Primary가 된 Standby 서버가 VIP를 가져가 Tomcat이 DB와 연결되도록 한다

 

 

*** Keepalived 사용 : 

Keepalived는 장애 감시와 VIP이동 기능을 수행 가능하다

 

추후 작성 예정 

 

 

 

참고:

https://blog.naver.com/PostView.naver?blogId=seuis398&logNo=222303179005