Я пытаюсь настроить HA-кластер с Percona xtraDB Cluster для репликации MySQL и HAproxy для балансировки нагрузки.
HAproxy действительно хорошо работает с apache, когда apache аварийно завершает работу или если он не отвечает, HAproxy переключается на другой узел.
Моя проблема началась с MySQL, я также установил MySQL в том же HAproxy, но когда 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
[...]
Ваш HAProxy не проверяет работоспособность MySQL, поскольку в вашем разделе MySQL вы говорите, что нужно выполнить тесты для 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 должен быть пользователь a_test_user, разрешающий соединения с HAProxy.