HAProxy 不会在 Galera 集群的节点之间平衡请求

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 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

相关内容