我困扰于平衡从应用服务器到 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 node2 的配置
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 } }
备份Keepalived node3的配置除了优先级和router_id之外,与node2的配置类似。
每个节点上的 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 不会向其他节点发送请求。当我停止主节点 keepalived 时,备份节点也仅使用其本地 MYSQL 服务器来处理请求。
有什么建议么?
谢谢您的回复并祝您有愉快的一天。
答案1
我找到了解决方案。如果您在一台服务器上启动 haproxy 和 MYSQL,则需要在前端将端口 3306 更改为 3307。
**` 前端 galera
bind 10.62.10.254:3307
mode tcp
default_backend galera