我尝试使用Percona xtraDB Cluster for MySQL复制和HAproxy来设置HA集群以实现负载平衡。
HAproxy对于apache非常有效,当apache崩溃或者没有响应时,HAproxy会在另一个节点上进行切换。
我的问题从MySQL开始,我也在相同的HAproxy中设置MySQL,但是当MySQL没有响应时,HAproxy不会切换到另一个节点。 然而,HAproxy看到,MySQL检查HAproxy状态MySQL服务器closures时,不响应原因。
我的问题是,是否有可能在HAproxy中设置两个资源? 他可以检查apache是否启动,如果没有启动另一个节点,检查MySQL是否启动,如果没有则启动另一个节点?
HAproxy.conf:
[...] frontend redmine bind 192.168.7.149:80 reqadd X-Forwarded-Proto:\ http default_backend redmine frontend redmineS bind 192.168.7.149:443 ssl crt /etc/ssl/private/quipment.fr.pem reqadd X-Forwarded-Proto:\ https default_backend redmine backend redmine 192.168.7.149:80 redirect scheme https if !{ ssl_fc } mode http balance roundrobin option http-server-close timeout http-keep-alive 3000 option forwardfor cookie PHPSESSID prefix cookie SRVNAME insert server xtra1 192.168.7.151:80 cookie x1 check server xtra2 192.168.7.147:80 cookie x2 check server xtra3 192.168.7.152:80 cookie x3 check listen mysql-cluster 192.168.7.149:3306 mode tcp balance roundrobin option httpchk server xtra1 192.168.7.151:3306 check port 9200 inter 1000 rise 3 fall 1 server xtra2 192.168.7.147:3306 check port 9200 inter 1000 rise 3 fall 1 server xtra3 192.168.7.152:3306 check port 9200 inter 1000 rise 3 fall 1 [...]
你的HAProxy不是testingMySQL的健康状况,就像你正在testing的http(使用行option httpchk ),你应该使用mysql-check选项 ,
listen mysql-cluster 192.168.7.149:3306 mode tcp balance roundrobin option mysql-check user a_test_user server xtra1 192.168.7.151:3306 check inter 1000 rise 3 fall 1 server xtra2 192.168.7.147:3306 check inter 1000 rise 3 fall 1 server xtra3 192.168.7.152:3306 check inter 1000 rise 3 fall 1
你应该在你的MySQL数据库中拥有允许HAProxy连接的用户a_test_user。