Я столкнулся с проблемой балансировки запросов от сервера приложений к узлам кластера 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