Назад | Перейти на главную страницу

HAProxy не балансирует запросы между узлами кластера Galera

Я столкнулся с проблемой балансировки запросов от сервера приложений к узлам кластера Galera.

Структура HA

node1 10.62.10.35 (HAProxy + Keepalived) Master

node1 10.62.10.36 (HAProxy + Keepalived) Backup

node1 10.62.10.37 (HAProxy + Keepalived) Backup

Конфигурация главного узла Keepalived 1

global_defs { router_id PSQL1 } vrrp_script haproxy { script "killall -0 haproxy" interval 2 weight 2 } vrrp_instance 50 { virtual_router_id 50 advert_int 1 priority 101 state MASTER interface ens160 virtual_ipaddress { 10.62.10.254/22 dev ens160 } track_script { haproxy } }

Конфигурация резервного узла Keepalived 2

global_defs { router_id PSQL2 } vrrp_script haproxy { script "killall -0 haproxy" interval 2 weight 2 } vrrp_instance 50 { virtual_router_id 50 advert_int 1 priority 3 state BACKUP interface ens160 virtual_ipaddress { 10.62.10.254/22 dev ens160 } track_script { haproxy } }

Конфигурация Backup Keepalived node3 аналогична node2, за исключением приоритета и router_id.

Конфигурация HAProxy аналогична на каждом узле.

** `веб-интерфейс galera

    listen 10.62.10.254:3306
    mode tcp
    default_backend galera

веб-интерфейс

    bind *:8080
    mode http
    default_backend web

бэкэнд galera

    balance roundrobin
    option tcpka
    option mysql-check user haproxy_check
    server node1 10.62.10.35:3306 check weight 1
    server node2 10.62.10.36:3306 check weight 1
    server node3 10.62.10.37:3306 check weight 1

серверная сеть

     mode http
     stats enable
     stats uri /
     stats realm Strictly\ Private
     stats auth Admin:admin
     stats auth Another_User:passwd

Keepalived работает. Если главный узел не работает (или keepalived / haproxy остановлен), то следующий резервный узел использует адрес 10.62.10.254. Но когда Мастер жив, и я останавливаю на нем только MYSQL, HAproxy не отправляет запросы другим узлам. Когда я останавливаю Master keepalived, узел Backup также использует только свой локальный сервер MYSQL для запросов.

Какие-либо предложения?

Спасибо за ответы и хорошего дня.

Я нашел решение. Если вы запускаете haproxy и MYSQL на одном сервере, вам нужно изменить порт 3306 на 3307 во внешнем интерфейсе.

** `веб-интерфейс galera

bind 10.62.10.254:3307
mode tcp
default_backend galera