Pgpool 4.1.2 подключения к внутренним узлам - PullRequest
0 голосов
/ 13 июля 2020

Я планирую использовать pgpool (v4.1.2) для его возможностей высокой доступности (пока не будет обновлен лог c нашего приложения). Таким образом, я отключил все возможности балансировки нагрузки:

load_balance_mode = 'off'
statement_level_load_balance = 'off'

Все запросы фактически отправляются на основной узел postgresql (v12) (что нормально).

$ show pool_nodes;
node_id |hostname|port|status|lb_weight| role  |select_cnt|load_balance_node|replication_delay|replication_state|replication_sync_state|last_status_change 
--------+--------+----+------+---------+-------+----------+-----------------+-----------------+-----------------+----------------------+--------------------+
 0      | pg01   |5432| up   |0.000000 |primary| 63425    | true            | 0               |                 |                      | 2020-07-13 10:42:25
 1      | pg02   |5432| up   |1.000000 |standby| 0        | false           | 0               |                 |                      | 2020-07-13 10:42:25

Но, Я заметил, что соединения создаются даже против вторичного (резервного узла), а num_init_children фактически равномерно распределяется между обоими внутренними узлами. Это приводит к тому, что в конечном итоге я получаю сообщение об ошибке «Извините, слишком много клиентов уже».

Есть ли способ «принудительно» инициализировать соединение только с основным узлом?

Или это означает , Я должен учитывать каждый серверный узел в кластере при вычислении num_init_children + max_pool?

Допустим, у меня есть требования к подключению к БД 300 (большинство из них объединены приложением, поэтому они будут оставаться подключенными и простаивать) , и два узла Postgres setup (первичная и потоковая реплика).

Должен ли я тогда настраивать 600 num_init_children + max_pool в моем случае? И если да, то что происходит с соединениями, когда один из узлов выходит из строя - будут ли все 600 из них созданы на последнем онлайн-сервере postgresql (дальнейшее увеличение требований к параметру max_connection в базе данных postgresql)?

...