我尝试使用Percona xtraDB集群(用于MySQL复制)和HAproxy (负载平衡)来设置HA集群。
HAproxy在apache中运行得很好,当Apache崩溃或没有响应时,HAproxy会切换到另一个节点。
我的问题从MySQL开始,我也在同一个HAproxy中设置了MySQL,但是当MySQL没有响应时,HAproxy就不会打开另一个节点。但是,HAproxy看到MySQL没有响应,因为当我签入HAproxy统计数据时,MySQL服务器已经关闭。
我的问题是,是否可以在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
[...]发布于 2015-06-19 15:54:08
您的HAProxy没有测试MySQL的健康状况,正如您在MySQL部分告诉您要对http (行option httpchk)进行测试一样,您应该使用选项mysql-检查,因此应该将其读为
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。
https://serverfault.com/questions/700267
复制相似问题