2013-10-15 193 views
0

我有一個使用Percona XtraDB的3個節點的數據庫集羣。三個節點在三個不同的系統上配置。我使用HAProxy負載平衡器將請求傳遞給這些節點。 3個節點中的兩個被配置爲HAProxy中的備份。當我向負載均衡器連接URL發出請求時,我可以看到請求默認轉到節點A.如果節點A關閉,並且我請求新的數據庫連接,則看到請求被路由到節點B.這是根據所需的設計。 但是,如果使用Java程序(jdbc URL)將連接請求發送到HAProxy,則在節點A關閉時發出幾個請求後,請求將被路由到節點A,我希望節點B /節點C爲請求提供服務。在目前的情況下,我看到「連接失敗」。 是否有任何配置可確保在節點發生故障時數據庫連接不會失敗,並且將來的請求將被路由到下一個可用節點? 我現在HAProxy的配置文件如下:HAProxy負載平衡MySQL服務器

global 
stats socket /var/run/haproxy.sock mode 0600 level admin 
log 127.0.0.1 local2 debug 
#chroot /var/lib/haproxy 
pidfile /var/run/haproxy.pid 
maxconn 4000 
daemon 
defaults 
mode tcp 
log global 
option tcplog 
timeout connect 10000 # default 10 second time out if a backend is not found 
timeout client 300000 
timeout server 300000 
maxconn 20000 
# For Admin GUI 
listen stats 
bind :8080 
mode http 
stats enable 
stats uri /stats 
listen mysql *:3306 
mode tcp 
balance roundrobin 
option mysql-check user haproxyUser 
option log-health-checks 
server MySQL-NodeA <ip-address>:3306 check 
server MySQL-NodeB <ip-address>:3306 check backup 
server MySQL-NodeC <ip-address>:3306 check backup 
+0

你是否管理解決這個問題? – Dan

回答

0

模式TCP下聽*:3306不能使用。使用這個命令檢查之前發佈在這裏:

haproxy -f /etc/haproxy.cfg -V