2015-10-01 38 views
1

我正在使用haproxy 1.5.4。在pgbouncer前面。haproxy pgsql -check和eof消息

我的配置已啓用pgsql-check。一旦支票啓用,我看到這些消息pgbouncer日誌

2015-10-01 05:02:46.203 27104 LOG C-0x6609d0: (nodb)/(nouser)@10.53.6.132:38711 closing because: client unexpected eof (age=8) 
2015-10-01 05:02:58.205 27104 LOG C-0x6609d0: (nodb)/(nouser)@10.53.6.132:39111 closing because: client unexpected eof (age=8) 
2015-10-01 05:03:10.207 27104 LOG C-0x6609d0: (nodb)/(nouser)@10.53.6.132:39707 closing because: client unexpected eof (age=9) 
2015-10-01 05:03:22.208 27104 LOG C-0x6609d0: (nodb)/(nouser)@10.53.6.132:40281 closing because: client unexpected eof (age=8) 

這些信息與默認檢查時發出的信息相同。我的意思是當沒有 選項pgsql-check時。

我也嘗試在pgsql-check中提供一個有效的用戶,並且仍然看到這樣的eof消息。

選項的pgsql檢查用戶PG

2015-10-01 04:58:27.057 27104 LOG C-0x6609d0: pg/[email protected]:17813 login attempt: db=pg user=pg 
2015-10-01 04:58:27.057 27104 LOG C-0x6609d0: pg/[email protected]:17813 closing because: client unexpected eof (age=0) 
2015-10-01 04:58:29.058 27104 LOG C-0x6609d0: pg/[email protected]:17882 login attempt: db=pg user=pg 
2015-10-01 04:58:29.058 27104 LOG C-0x6609d0: pg/[email protected]:17882 closing because: client unexpected eof (age=0) 

我的問題是從默認tcp checkpgsql-check多麼的不同。我的印象是,它會正確關閉連接,我不會在日誌中看到這些消息。

即使使用pgsql-check,我們是否看到這些訊息?

回答

1

當HAProxy直接連接到PostgreSQL時(我的情況postgres 9.4和HAProxy 1.5),我有同樣的消息。

沒有給予任何的用戶名,我得到:

LOG: could not receive data from client: Connection reset by peer 
LOG: incomplete startup packet 

有了一個有效的用戶名:

LOG: could not receive data from client: Connection reset by peer 

所以,很顯然,沒有用戶名的pgsql檢查似乎是相當接近「標準」 TCP檢查。用戶名似乎發送了一個有效的啓動順序。但是在這兩種情況下,連接都會突然終止,並且看起來並不正確關閉。

解決方案可能是使用the generic TCP check來正確打開和關閉連接,但這種做法違反了整個pgsql-check目的。