Я столкнулся с проблемой балансировки запросов от сервера приложений к узлам кластера 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
Конфигурация главного узла Keepalived1
global_defs {
router_id PSQL1
}
vrrp_script haproxy {
скрипт "killall -0 haproxy"
интервал 2
вес 2
}
vrrp_instance 50 {
virtual_router_id 50
Advert_int 1
приоритет 101
государственный МАСТЕР
интерфейс ens160
virtual_ipaddress {
10.62.10.254/22 разработчика Ens160
}
track_script {
haproxy
}
}
Конфигурация резервного узла Keepalived 2
global_defs {
router_id PSQL2
}
vrrp_script haproxy {
скрипт "killall -0 haproxy"
интервал 2
вес 2
}
vrrp_instance 50 {
virtual_router_id 50
Advert_int 1
приоритет 3
состояние РЕЗЕРВНОЕ КОПИРОВАНИЕ
интерфейс ens160
virtual_ipaddress {
10.62.10.254/22 разработчика Ens160
}
track_script {
haproxy
}
}
Конфигурация резервного Keepalived node3 аналогична узлу node2 за исключением приоритета и router_id.
Конфигурация HAProxy аналогична на каждом узле
** ` веб-интерфейс
listen 10.62.10.254:3306
mode tcp
default_backend galera
веб-интерфейс
bind *:8080
mode http
default_backend web
веб-интерфейс веб-интерфейса
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, узел резервного копирования также использует для запросов только свой локальный сервер MYSQL.
Есть предложения?
Спасибо за ответы и хорошего дня.
Я нашел решение. Если вы запускаете haproxy и MYSQL на одном сервере, вам нужно изменить порт 3306 на 3307 во внешнем интерфейсе.
** `frontend galera
bind 10.62.10.254:3307
mode tcp
default_backend galera