下面给你一个生产可用的 HAProxy 高可用(HA)搭建方案,基于最常见的 HAProxy + Keepalived 架构(Linux 环境)。
VIP (虚拟IP)
|
+--------+--------+
| |
HAProxy-1 HAProxy-2
Keepalived Keepalived
| |
+--+--+ +--+--+
| | | |
Web1 Web2 Web1 Web2
假设:
| 角色 | IP | 主机名 |
|---|---|---|
| HAProxy Master | 192.168.1.10 | ha1 |
| HAProxy Backup | 192.168.1.11 | ha2 |
| VIP | 192.168.1.100 | - |
| 后端 Web | 192.168.1.20 / 21 | web1 / web2 |
系统:CentOS 7 / 8 或 Rocky / Ubuntu(命令略有差异)
# CentOS / Rocky
yum install -y haproxy
# Ubuntu
apt install -y haproxy
编辑 /etc/haproxy/haproxy.cfg
global
log /dev/log local0
maxconn 4096
user haproxy
group haproxy
defaults
log global
mode http
option httplog
timeout connect 5s
timeout client 30s
timeout server 30s
frontend http_front
bind *:80
default_backend web_back
backend web_back
balance roundrobin
server web1 192.168.1.20:80 check
server web2 192.168.1.21:80 check
启动:
systemctl enable haproxy
systemctl start haproxy
yum install -y keepalived
# 或
apt install -y keepalived
/etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
}
⚠️
interface要用你真实的网卡名(如ens192)
systemctl enable keepalived
systemctl start keepalived
验证 VIP:
ip addr | grep 192.168.1.100
vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
weight -30
}
vrrp_instance VI_1 {
...
track_script {
chk_haproxy
}
}
nopreempt(避免抖动)Master 配置:
nopreempt
curl http://192.168.1.100
systemctl stop haproxy
# 或
reboot
| 问题 | 原因 |
|---|---|
| VIP 不漂移 | 防火墙 / selinux / 网卡名错误 |
| 脑裂 | 未配置 preempt / script |
| 云服务器不支持 VIP | 云厂商禁止 ARP 漂移 |
如果你告诉我:
我可以直接给你可复制的完整配置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。