HAProxy负载平衡MySQL服务器

时间:2013-10-15 08:51:02

标签: jdbc haproxy percona

我有一个使用Percona XtraDB的3个节点的数据库集群。这三个节点配置在三个不同的系统上。我使用HAProxy负载均衡器将请求传递给这些节点。 3个节点中的两个在HAProxy中配置为备份。当我向负载均衡器连接URL发出请求时,我可以看到请求默认转到节点A.如果节点A关闭并且我请求新的数据库连接,我看到请求被路由到节点B.这是根据所需的设计。 但是,如果使用Java程序(jdbc URL)将连接请求发送到HAProxy,请求将路由到节点A,如果节点A发生故障,请提供一些请求,我希望节点B /节点C提供请求。在当前场景中,我看到“连接失败”。 是否有任何配置可以确保在节点发生故障的情况下,数据库连接不会失败,未来的请求将被路由到下一个可用节点? 我当前的HAProxy配置文件如下:

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

1 个答案:

答案 0 :(得分:0)

模式tcp下listen *:3306无法使用。使用此命令在此处发布之前检查:

haproxy -f /etc/haproxy.cfg -V