Я запускаю HAProxy для распределения нагрузки между 3 узлами mysql galera. К сожалению, HAProxy показывает, что node2 постоянно отключен, в то время как другие узлы работают отлично. Конфиг выглядит просто отлично, имя пользователя, пароли, порты все как должно быть. Я не могу найти причину этого.
Это соответствующая часть конфигурации HAProxy:
listen mysql-galera-cluster
bind 10.0.0.10:3306
mode tcp
option mysql-check user haproxy_check
balance roundrobin
source 10.0.0.10
server db1 10.0.0.101:3307 check
server db2 10.0.0.102:3307 check
server db3 10.0.0.103:3307 check
На db3 я получаю следующую запись в mysql.log:
151111 17:48:06 1518 Connect haproxy_check@10.0.0.10 on
1518 Quit
На db2 такой записи нет. Однако журнал работает, если я попытаюсь войти в систему вручную (mysql -h 10.0.0.102:3307 -u root -p
), Я получил:
151111 17:30:48 342 Connect root@node1 on
342 Connect Access denied for user 'root'@'node1' (using password: YES)
Так почему же HAProxy не пытается проверить наличие 10.0.0.102? Я пробовал ту же строку с 10.0.0.103, и она отлично работает.
Заранее благодарим вас за любую помощь в этом вопросе!
Я решил проблему. Это было связано не с конфигурацией HAProxy, а с неправильной конфигурацией keepalived. На db2 настроен резервный keepalived, для которого eth0 был настроен как 10.0.0.10 вместо eth1. Изменение этого устранило проблему.
Попробуйте увеличить интервал между двумя последовательными проверками работоспособности.
Например: 5 с.
server db1 10.0.0.101:3307 check inter 5s
server db2 10.0.0.102:3307 check inter 5s
server db3 10.0.0.103:3307 check inter 5s