Pgpool-IIのSHOW POOL_NODESのload_balance_nodeはSHOW POOL_NODESを実行したセッションがどのノードを使用しているかを示します。
具体的にはload_balance_nodeがtrueになっているノードに検索クエリを投げます。
例えば、
ap2=# SHOW POOL_NODES ; node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay | last_ status_change ---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------+------ --------------- 0 | localhost | 5433 | up | 0.500000 | primary | 0 | true | 0 | 2018- 12-29 23:53:02 1 | 192.168.86.135 | 5433 | up | 0.500000 | standby | 0 | false | 0 | 2018- 12-30 00:01:57 (2 rows)
だった場合は、node_idが0のPostgreSQLに検索クエリを投げます。
SHOW POOL_NODESの悲しいところは、上記の状態でnode_idが1のノード(Postgres)がdownした場合でも、node_idが1のノード(Postgres)に検索クエリを投げるセッションが検索クエリを投げない限り、node_idが1のノードのstatusがupのままになることです。
試してみます。
node_idが1のPostgresを落とします。
[root@postgresql11-testserver-2 ap2]# systemctl stop postgresql-11.service
node_idが1のPostgresを落とした状態で、node_idが0のノードのload_balance_nodeのstatusがUPとなっているセッションで、SHOW POOL_NODESを実行した結果は以下のとおりです。
ap2=# SHOW POOL_NODES ;
node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay | last_
status_change
---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------+------
---------------
0 | localhost | 5433 | up | 0.500000 | primary | 0 | true | 0 | 2018-
12-29 23:53:02
1 | 192.168.86.135 | 5433 | up | 0.500000 | standby | 0 | false | 0 | 2018-
12-30 00:01:57
(2 rows)
さらにデータをINSERTしてからSHOW POOL_NODESを実行してもnode_idが1のノードのstatusがupのままです。
ap2=# INSERT INTO sample (a) VALUES (9) ;
INSERT 0 1
ap2=# SHOW POOL_NODES ;
node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay | last_
status_change
---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------+------
---------------
0 | localhost | 5433 | up | 0.500000 | primary | 0 | true | 0 | 2018-
12-29 23:53:02
1 | 192.168.86.135 | 5433 | up | 0.500000 | standby | 0 | false | 0 | 2018-
12-30 00:01:57
(2 rows)
SHOW POOL_NODESを実行する際は、node_1のノードの最新の状態を取得してからstatusを表示するようにするといいのになと思いました。
Pgpool-IIのSHOW POOL_NODESのload_balance_nodeについては以下のドキュメントが参考になります。