Postgresql

pgpool 負載平衡將所有查詢僅發送到 master

  • November 5, 2015

我的兩台 postgresql 伺服器配置為流式複制,執行良好。

Pgpool 配置為主從模式/負載平衡模式。

pgpool.conf:

listen_addresses = '*'
port = 9999
backend_hostname0 = 'master-postgres-ip'
backend_port0 = port-no
backend_weight0 = 1
backend_data_directory0 = 'data-dir'
backend_hostname1 = 'slave-postgres-ip'
backend_port1 = port-no
backend_weight1 = 1
backend_data_directory1 = 'data-dir'
load_balance_mode = on
master_slave_mode = on
master_slave_sub_mode='stream'

我預計所有的寫查詢都將轉到主查詢,而讀查詢將分佈在兩者之間。但是,所有的查詢都只會掌握。但是,如果我停止 master,查詢將成為奴隸。

有人可以告訴我可能出了什麼問題嗎?

pgpool 在啟動時給出以下日誌:

2015-11-03 17:25:56: pid 21284: LOG:  find_primary_node: checking backend no 0
2015-11-03 17:25:56: pid 21284: LOG:  find_primary_node: checking backend no 1
2015-11-03 17:25:56: pid 21284: DEBUG:  SSL is requested but SSL support is not available
2015-11-03 17:25:56: pid 21284: DEBUG:  authenticate kind = 3
2015-11-03 17:25:56: pid 21284: ERROR:  failed to authenticate
2015-11-03 17:25:56: pid 21284: DETAIL:  invalid authentication message response type, Expecting 'R' and received 'E'
2015-11-03 17:25:56: pid 21284: DEBUG:  find_primary_node: no primary node found

最初,我設置sr_check_periodpgpool.conf0(零)以禁用 SR 檢查。我想避免這種檢查並總是平衡負載。但這導致了問題。

在我給這個屬性一個非零值之後,負載平衡開始工作。

backend_hostname1 = 'master-postgres-ip'- >這應該指向你的奴隸,而不是主人。

引用自:https://dba.stackexchange.com/questions/119941