У меня есть кластер базы данных из 3 узлов с использованием Percona XtraDB. Три узла сконфигурированы на трех разных системах. Я использовал HAProxy load balancer для передачи запросов этим узлам. Два из трех узлов настроены как резервное копирование в HAProxy. Когда я запускаю запрос на URL-адрес соединения балансировки нагрузки, я вижу, что запрос отправляется на узел А по умолчанию. Если узел A не работает, и я запрашиваю новое подключение к базе данных, я вижу, что запрос перенаправляется на узел B. Это соответствует желаемому дизайну. Однако, если запрос на соединение отправляется в HAProxy с использованием Java-программы (URL-адрес jdbc), запрос направляется на узел A, после обслуживания нескольких запросов, если узел A опускается, я хочу, чтобы узел B/узел C обслуживал запрос , В текущем сценарии я вижу «Connection Failed». Есть ли какая-либо конфигурация, которая обеспечит, что в случае отказа узла соединение с базой данных не будет завершено, а будущие запросы будут перенаправлены на следующий доступный узел? Мой текущий файл конфигурации HAProxy выглядит следующим образом:HAProxy балансировка нагрузки MySQL-серверы
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
Помогло ли вам решить эту проблему? – Dan