Pgpool-IIの開発チームでは、Pgpool-II 3.6を11月にリリースすべく準備を進めています。今回は、その中から “show pool_nodes” コマンドの機能強化についてお知らせします。
“show pool_nodes”コマンドは、SQLのshowコマンドと同様にPgpool-IIに送信することができます。ただし、このコマンドは、PostgreSQLまで送られず、Pgpool-II内部で処理され、結果がクライアントに送信されます。以下が Pgpool-II 3.6でのshow pool_nodesの表示結果です。
node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication delay
---------+----------+-------+--------+-----------+---------+------------+-------------------+-------------------
0 | /tmp | 11002 | up | 0.500000 | primary | 0 | true | 0
1 | /tmp | 11003 | up | 0.500000 | standby | 0 | false | 3288
(2 rows)
赤で表示されている部分が3.6で変更ないし新規に追加された部分です。
まず、”status”ですが、これはPostgreSQLの状態を表します。”up”は稼働中、”down”でダウン状態を表します。これは以前はそれぞれ数字の”2″と”3″だったので、それに比べると直感的にわかりやすくなっていま。
“load_balance_node”は、このセッションで選択された「ロードバランスノード」かどうかを表します。ロードバランスノードとは、負荷分散のために検索クエリを投げる先のPostgreSQLサーバのことです。この例では、ノード0がプライマリサーバであると同時に、検索クエリの投げ先にもなっていることがわかります。”lb_weight”を見ると、それぞれのサーバが0.5ずつと、均等に割り当てられているので、1/2の確率で、0または1のノードがロードバランスノードになります。
ロードバランスノードかどうかは、Pgpool-II 3.6ではフェイルオーバの際に重要な意味を持っています。以前は、フェイルオーバが発生すると、すべてのセッションが切断されてしまっていましたが、Pgpool-II 3.6では、あるスタンバイノードが切断されても、そのセッションから見てロードバランスノードになっていなければ、フェイルオーバの際にもセッションが切断されないのです。この理由もあって、Pgpool-II 3.6ではロードバランスノードかどうかを表示するようになったわけです。
最後に “replication_delay” ですが、これは言うまでもなくストリーミングレプリケーションにおけるレプリケーションの遅延量です。単位はバイトで、数字が大きければ大きいほど遅延も大きいことになります。0なら、遅延はまったくありません。プライマリサーバでは、当然のことながら遅延は常に0です。
1 thought on ““show pool_nodes”の機能追加”