Auto Fail-over란?
- failover은 pgpool-II에서 액세스할 수 없는 PostgreSQL 백엔드 노드를 자동으로 분리하는 것입니다.
Auto Fail-over & VIP change Test
- 기존 VIP가 node 0에 있는 상태에서 node 0 서버가 종료되면, VIP는 node 1 으로 전환됩니다.
node 0 에서 조회
$ psql -p 9999 -c ‘show pool_nodes;’ # 각 node 상태 확인
node_id | hostname | port | status | pg_status | lb_weight | role | pg_role | select_cnt | load_balance_node
———+—————–+——+——–+———–+———–+———+———+————+————
0 | 192.168.200.141 | 5432 | up | up | 0.500000 | primary | primary | 0 | true
1 | 192.168.200.142 | 5432 | up | up | 0.500000 | standby | standby | 0 | false
(2 rows)$ ifconfig
ens33: flags=4163 mtu 1500
inet 192.168.200.141 netmask 255.255.255.0 broadcast 192.168.200.255
ens33:0: flags=4163 mtu 1500
inet 192.168.200.200 netmask 255.255.255.0 broadcast 0.0.0.0
ether 00:0c:29:37:1a:2d txqueuelen 1000 (Ethernet)
node 0 서버 재부팅
(node0) reboot # reboot 시 서버,OS 종료 되어 node 0이 primary로 승격 하며 VIP를 가져옴
node 1에서 조회
$ psql -p 9999 -c ‘show pool_nodes;’ # 각 node 상태 확인
node_id | hostname | port | status | pg_status | lb_weight | role | pg_role | select_cnt | load_balance_node |
———+—————–+——+——–+———–+———–+———+———+————+————
0 | 192.168.200.141 | 5432 | down | down | 0.500000 | standby | unknown | 0 | false
1 | 192.168.200.142 | 5432 | up | up | 0.500000 | primary | primary | 0 | true$ ifconfig
ens33: flags=4163 mtu 1500
inet 192.168.200.142 netmask 255.255.255.0 broadcast 192.168.200.255ens33:0: flags=4163 mtu 1500
inet 192.168.200.200 netmask 255.255.255.0 broadcast 0.0.0.0
ether 00:0c:29:e4:a1:13 txqueuelen 1000 (Ethernet)
Online Recovery란?
- pgpool-II은 데이터베이스 노드를 동기화하고 서비스를 중지하지 않고 노드를 연결합니다.
- pcp_recovery_node 명령어를 통해 실행할 수 있습니다.
- pgpool_recovery extension을 반드시 설치해야 합니다.
Online Recovery Test
- 노드를 조회하여 0번 노드가 down된 상태임을 확인합니다.
$ psql -p 9999 -c ‘show pool_nodes’;
node_id | hostname | port | status | pg_status | lb_weight | role | pg_role | select_cnt | load_balance_node |
———+—————–+——+——–+———–+———–+———+———+————+————
0 | 192.168.200.141 | 5432 | down | down | 0.500000 | standby | unknown | 0 | false
1 | 192.168.200.142 | 5432 | up | up | 0.500000 | primary | primary | 0 | true
- pcp_recovery_node 커맨드를 이용해 0번 노드를 복구합니다.
$ pcp_recovery_node -n 0 -h /var/run/opensql –w
pcp_recovery_node — Command Successful
- 노드를 조회하여 노드가 복구가 잘 되었는지 확인합니다.
$ psql -p 9999 -c ‘show pool_nodes’;
node_id | hostname | port | status | pg_status | lb_weight | role | pg_role | select_cnt | load_balance
———+—————–+——+——–+———–+———–+———+———+————+————
0 | 192.168.200.141 | 5432 | up | up | 0.500000 | standby | standby | 0 | true
1 | 192.168.200.142 | 5432 | up | up | 0.500000 | primary | primary | 0 | false
(2 rows)
Switch over란?
- pcp_promote_node 명령어를 통해 pgpool-II은 지정된 노드를 새로운 Primary로 승격시킬 수 있습니다.
- 현재 primary 노드를 down으로 변경하고, 그러면 failover_comman가 실행되어 지정된 노드가 새 primary 노드로 승격됩니다.
- switch over를 실행 하려면 이전 primary노드가 standby노드로 전환되어야 하기 때문에 follow_primary_command가 반드시 올바르게 설정되어 있어야 합니다.
Switch over란?
- 노드를 조회하여 현재 노드 상태를 확인합니다.
$ psql -p 9999 -c ‘show pool_nodes’;
node_id | hostname | port | status | pg_status | lb_weight | role | pg_role | select_cnt | load_balance
———+—————–+——+——–+———–+———–+———+———+————+————
0 | 192.168.200.141 | 5432 | up | up | 0.500000 | standby | standby | 0 | true
1 | 192.168.200.142 | 5432 | up | up | 0.500000 | primary | primary | 0 | false
(2 rows)
- 0번 노드를 새로운 primary 노드로 지정하고 switch over를 진행합니다.
$ pcp_promote_node -n 0 -h /var/run/opensql -s -w
pcp_promote_node — Command Successful
- 노드를 조회하여 1번 노드가 primary노드로 변경되었는지 확인합니다.
$ psql -p 9999 -c ‘show pool_nodes’;
node_id | hostname | port | status | pg_status | lb_weight | role | pg_role | select_cnt | load_balance_node | ———+—————–+——+——–+———–+———–+———+———+————+————
0 | 192.168.200.141 | 5432 | up | up | 0.500000 | primary | primary | 0 | true
1 | 192.168.200.142 | 5432 | down | up | 0.500000 | standby | standby | 0 | false
지금까지 PostgreSQL의 pgpool-II (2)에 관해 알아보았습니다
PostgreSQL을 쉽게 사용할 수 있도록 유용한 팁을 가지고 돌아오겠습니다.