About
home
Tmax OpenSQL
home
๐Ÿ’ป

47. pgpool-II(2)

์ž‘์„ฑ์ž

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<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.200.141 netmask 255.255.255.0 broadcast 192.168.200.255 ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 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)
PowerShell
๋ณต์‚ฌ
โ—ฆ
node 0 ์„œ๋ฒ„ ์žฌ๋ถ€ํŒ…
(node0) reboot # reboot ์‹œ ์„œ๋ฒ„,OS ์ข…๋ฃŒ ๋˜์–ด node 0์ด primary๋กœ ์Šน๊ฒฉ ํ•˜๋ฉฐ VIP๋ฅผ ๊ฐ€์ ธ์˜ด
PowerShell
๋ณต์‚ฌ
โ—ฆ
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<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.200.142 netmask 255.255.255.0 broadcast 192.168.200.255 ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 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)
PowerShell
๋ณต์‚ฌ

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
PowerShell
๋ณต์‚ฌ
โ€ข
pcp_recovery_node ์ปค๋งจ๋“œ๋ฅผ ์ด์šฉํ•ด 0๋ฒˆ ๋…ธ๋“œ๋ฅผ ๋ณต๊ตฌํ•ฉ๋‹ˆ๋‹ค.
$ pcp_recovery_node -n 0 -h /var/run/opensql โ€“w pcp_recovery_node -- Command Successful
PowerShell
๋ณต์‚ฌ
โ€ข
๋…ธ๋“œ๋ฅผ ์กฐํšŒํ•˜์—ฌ ๋…ธ๋“œ๊ฐ€ ๋ณต๊ตฌ๊ฐ€ ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
$ 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)
PowerShell
๋ณต์‚ฌ

Switch over๋ž€?

โ€ข
pcp_promote_node ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด pgpool-II์€ ์ง€์ •๋œ ๋…ธ๋“œ๋ฅผ ์ƒˆ๋กœ์šด Primary๋กœ ์Šน๊ฒฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
ํ˜„์žฌ primary ๋…ธ๋“œ๋ฅผ down์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , ๊ทธ๋Ÿฌ๋ฉด failover_comman๊ฐ€ ์‹คํ–‰๋˜์–ด ์ง€์ •๋œ ๋…ธ๋“œ๊ฐ€ ์ƒˆ primary ๋…ธ๋“œ๋กœ ์Šน๊ฒฉ๋ฉ๋‹ˆ๋‹ค.
โ€ข
switch over๋ฅผ ์‹คํ–‰ ํ•˜๋ ค๋ฉด ์ด์ „ primary๋…ธ๋“œ๊ฐ€ standby๋…ธ๋“œ๋กœ ์ „ํ™˜๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— follow_primary_command๊ฐ€ ๋ฐ˜๋“œ์‹œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Switch over Test

โ€ข
๋…ธ๋“œ๋ฅผ ์กฐํšŒํ•˜์—ฌ ํ˜„์žฌ ๋…ธ๋“œ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
$ 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)
PowerShell
๋ณต์‚ฌ
โ€ข
0๋ฒˆ ๋…ธ๋“œ๋ฅผ ์ƒˆ๋กœ์šด primary ๋…ธ๋“œ๋กœ ์ง€์ •ํ•˜๊ณ  switch over๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
$ pcp_promote_node -n 0 -h /var/run/opensql -s -w pcp_promote_node -- Command Successful
PowerShell
๋ณต์‚ฌ
โ€ข
๋…ธ๋“œ๋ฅผ ์กฐํšŒํ•˜์—ฌ 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
PowerShell
๋ณต์‚ฌ
์ง€๊ธˆ๊นŒ์ง€ PostgreSQL์˜ pgpool-II (2)์— ๊ด€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค
PostgreSQL์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ ์šฉํ•œ ํŒ์„ ๊ฐ€์ง€๊ณ  ๋Œ์•„์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ์ปจํ…์ธ ๋„ ๊ธฐ๋Œ€ํ•ด์ฃผ์„ธ์š”! (์ปจํ…์ธ ๋Š” ๋งค์ฃผ ์—…๋ฐ์ดํŠธ ๋ฉ๋‹ˆ๋‹ค.)
PostgreSQL ์˜ Technical Guide ํฌ์ŠคํŒ…์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ณด์‹œ๋ ค๋ฉด ์•„๋ž˜ ๋งํฌ๋ฅผ ํด๋ฆญํ•ด์ฃผ์„ธ์š”!

์ž์œ ๋กญ๊ฒŒ ๋Œ“๊ธ€์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”