<div dir="ltr">I did as you suggested, I set the 

database_redirect_preference_list value in pgpool.conf to <br><br>database_redirect_preference_list = '.*:standby' <br><br>but load balancing did not work after failover, however when I manually set the backend_weight1 = 0 and backend_weight2 = 1 after failover, the load balancing started to work.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 16, 2023 at 1:02 PM Tatsuo Ishii <<a href="mailto:ishii@sraoss.co.jp">ishii@sraoss.co.jp</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> Dear pgpool-hackers,<br>
> <br>
> We’re currently working on pg_cirrus - a simple tool to setup 3-node HA<br>
> PostgreSQL clusters using pgpool. We’re facing an issue i.e. load balancing<br>
> after failover does not work.<br>
> <br>
> When pg_cirrus sets up 3-node HA cluster within the same subnet, load<br>
> balancing works seamlessly as expected i.e. write operations go to primary<br>
> node and read operations go to standby nodes, but after primary node goes<br>
> down the read and write queries both land on the same newly promoted<br>
> primary node.<br>
> <br>
> We’re using the following load balancing properties in pgpool.conf:<br>
> <br>
> backend_weight0 = 0<br>
> <br>
> backend_weight1 = 0.5<br>
> <br>
> backend_weight2 = 0.5<br>
> <br>
> load_balance_mode = on<br>
> <br>
> Is this the expected behavior or are we doing something wrong, kindly guide<br>
> us.<br>
<br>
Assuming the initial primary is node 0 and the new primary is node 1,<br>
it seems pgpool behaves as expected. After failover, node 0 becomes<br>
new standby with weight 0, which means no read query is routed to node<br>
0. In the mean time node 1 becomes the new primary with weight 0.5,<br>
which means some of read queries are routed to node1, new primary.<br>
<br>
If you want to keep on routing no read query being sent to primary<br>
node, you can use database_redirect_preference_list. For example,<br>
<br>
database_redirect_preference_list = '.*:standby'<br>
<br>
will route read queries to one of standby servers (which standby is<br>
chosen is depending on the weight parameter), i.e. no read query is<br>
routed to primary. This behavior is kept regardless which node is<br>
assigned to the primary. See manual for more details.<br>
<br>
Best reagards,<br>
--<br>
Tatsuo Ishii<br>
SRA OSS LLC<br>
English: <a href="http://www.sraoss.co.jp/index_en/" rel="noreferrer" target="_blank">http://www.sraoss.co.jp/index_en/</a><br>
Japanese:<a href="http://www.sraoss.co.jp" rel="noreferrer" target="_blank">http://www.sraoss.co.jp</a><br>
</blockquote></div>