首先,我对 HAProxy 堆栈的体验只有一天之久,所以我希望我的问题是有道理的。
我有 2 个 HAProxy 虚拟机和 2 个 Apache 虚拟机(流浪机器),如下所示。
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/default/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
两台服务器上的保持设置
/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
我在阅读下面的博客文章后创建了这个示例。
正如我所想,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