当两个 HAProxy 服务器中只有一个发生故障时,系统就会中断。故障转移似乎不起作用

当两个 HAProxy 服务器中只有一个发生故障时,系统就会中断。故障转移似乎不起作用

首先,我对 HAProxy 堆栈的使用经验只有一天,所以我希望我的问题是有意义的。

我有 2 个 HAProxy VM 和 2 个 Apache VM(流浪机器),如下所示。

192.168.50.11 HAPROXY VM1
192.168.50.12 HAPROXY VM2
192.168.50.21 APACHE VM1
192.168.50.22 APACHE VM2

192.168.50.10 FLOATING IP - set in keepalived of both HAProxy servers above

如果我关闭其中一台 Apache 服务器,呼叫http://192.168.50.10系统仍能正常工作,这很好。但是,如果我关闭其中一台 HAProxy 服务器,整个服务都会停止。根据以下配置,您能告诉我这里缺少什么吗?

两台服务器上的 HAPROXY 设置

/etc/默认/haproxy

ENABLED=1

/etc/haproxy/haproxy.cfg

global
    log /dev/log local0
    log 127.0.0.1 local1 notice
    user haproxy
    group haproxy
    maxconn 2000
    daemon

defaults
    log global
    mode http
    option httplog
    option dontlognull
    retries 3
    option redispatch
    timeout connect 5000
    timeout client 50000
    timeout server 50000

listen webservers 192.168.50.10:80
    balance roundrobin
    stats enable
    stats auth admin:admin
    stats uri /haproxy?stats
    option httpchk
    option forwardfor
    option http-server-close
    server webserver1 192.168.50.21:80 check
    server webserver2 192.168.50.22:80 check

两台服务器上的 Keepalived 设置

/etc/sysctl.conf

net.ipv4.ip_nonlocal_bind=1

等/keepalived/keepalived.conf

vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    #Ping every 2 seconds
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    interface eth0
    state MASTER
    virtual_router_id 51
    priority 11
    virtual_ipaddress {
        192.168.50.10
    }
    track_script {
        chk_haproxy
    }
}

笔记:priority依赖于 VM,因此它priority 11适用于192.168.50.11 HAPROXY VM1机器并priority 12适用于192.168.50.12 HAPROXY VM2机器。

我在阅读下面的博客文章后创建了这个示例。

答案1

正如我所想,keepalived 配置文件存在小错误。

state MASTER对于 192.168.50.11# This is the master HAProxy

state BACKUP对于 192.168.50.12# This is the failover HAProxy

priority 12对于 192.168.50.11# the higher priority goes with the master HAProxy

priority 11对于 192.168.50.12

相关内容