首先,我对 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