DB

[PostgreSQL] repmgr을 이용한 DB 이중화 구성하기_3, VIP

메바동 2022. 10. 3. 00:18
728x90

auto failover까지 정상적으로 수행되는 것을 확인하였으니 이번에는 Rocky Linux에 VIP를 할당한 후 auto failover 시 VIP를 가진 서버가 변경되도록 하기로 하였다.

 

 

 

1. VIP 설정하기

우선 auto failover 시에 VIP를 변경하기 위해서는 기본적으로 VIP가 설정되어 있어야 한다.

 

cd /etc/sysconfig/network-scripts/
vi ifcfg-{이더넷 인터페이스명}

 

테스트 환경인 vm1과 vm2는 자동으로 네트워크에 연결을 사용하였기 때문에 현재 사용 중인 IP와 gateway를 ifconfig 명령어와 ip route를 사용하여 알아두었다.

 

BOOTPROTO=static
IPADDR={IP}
NETMASK=255.255.255.0
GATEWAY={gateway}

 

dhcp로 설정되어있던 BOOTPROTO를 static으로 변경 후 IP 주소와 넷마스크, 게이트웨이를 지정해 주었다.

 

cp ifcfg-{이더넷 인터페이스} ./ifcfg-{이더넷 인터페이스}:1

이더넷 인터페이스 설정 파일 뒤에 :1을 붙인 파일명을 생성해준 뒤 해당 파일에서 UUID를 주석 처리하고 IPADDR에 VIP로 사용할 주소를 적어준다. DEVICE와 NAME 역시 파일명과 동일하게 :1을 붙여준다.

현재 테스트에서는 vm1은 129, vm2는 131 주소를 사용 중이기 때문에 130을 VIP로 설정해 주었다.

 

 

그 후 ip a를 입력해 보면 현재 primary에 VIP가 할당된 것을 확인할 수 있었다.

 

 

DBeaver를 사용하여 VIP로 DB를 연결할 경우 정상적으로 연결되는 것을 확인할 수 있다.

 

 

 

2. auto failover 시 VIP 변경하기

 

우선 sudoers 파일을 열어 postgres에 /usr/sbin/ip를 패스워드 없이 사용할 수 있도록 적어준다.

 

su - postgres
vi failover_promote.sh

 

그다음은 지난번에 작성했던 failover_promote 스크립트를 열어 현재 스크립트가 실행되는 서버에서 VIP를 추가하고, standby가 되는 서버에 ssh 접속 후 VIP를 제거하는 부분을 넣어준다.

 

sudo ip addr add {VIP}/24 dev {이더넷 인터페이스명}:1

sudo ip addr del {VIP}/24 dev {이더넷 인터페이스명}:1

 

넣는 위치는 스크린샷을 참조하면 된다.

 

 

 

여기까지 설정이 끝났으니 auto failover 후 VIP가 정상적으로 변경이 되는지 확인해보자.

 

 

현재 vm1 서버가 primary 상태로 동작 중이고, VIP를 갖고 있다. vm2는 standby로 등록되어 있으며 VIP를 갖고 있지 않다.

여기서 vm1 서버를 종료 후 primary 및 VIP가 정상적으로 vm2로 넘어가는 것을 확인해 보기로 한다.

 

 

vm2 서버로 primary와 VIP가 정상적으로 넘어간 것을 확인했으며, VIP로 연결한 DBeaver도 정상적으로 동작하는 것을 확인하였다.

이제 vm1 서버를 시작 후 VIP가 없어져 있는지 확인해보면 된다.

 

 

vm1 서버를 재부팅 후 ip a를 이용하여 ip를 확인했을 때 VIP가 정상적으로 제거된 것을 확인하였다.

 

 

 

이것으로 repmgr을 이용한 이중화 구성에 대한 포스팅은 끝을 내기로 한다.

auto failover 시 서버 상태를 확인하는 시간을 15초 정도로 설정하여 DBeaver를 이용한 DB 접속에 약 20초 정도의 지연이 발생하는데 실제로 repmgr을 이용한 이중화 구성 시에는 네트워크 상태에 따라서 상태 확인 시간을 짧게 하는 것이 좋을 것 같다.

 

repmgr에 대한 포스팅들은 기본적인 작동 여부만 확인하는 테스트로 진행하였기 때문에 실사용을 하기에는 이것저것 더 알아본 뒤 사용해야 할 것이다.

728x90