目录
[🚀Keepalived + HAProxy 实现高可用架构详解](#🚀Keepalived + HAProxy 实现高可用架构详解)
[1️⃣ HAProxy](#1️⃣ HAProxy)
[2️⃣ Keepalived](#2️⃣ Keepalived)
[✅ 正常情况下:](#✅ 正常情况下:)
[⚠️ 主节点宕机时:](#⚠️ 主节点宕机时:)
[1️⃣ Keepalived 主节点配置](#1️⃣ Keepalived 主节点配置)
[2️⃣ Keepalived 备节点配置](#2️⃣ Keepalived 备节点配置)
[3️⃣ HAProxy 简要配置](#3️⃣ HAProxy 简要配置)
🚀Keepalived + HAProxy 实现高可用架构详解
在现代互联网架构中,高可用性(High Availability,HA)是衡量系统稳定性的关键指标。Keepalived 与 HAProxy 的结合,是实现四层/七层负载均衡 + 主备切换的黄金组合。本文将深入解析其工作机制、实现方式,并提供部署示意。
🧠一、核心组件介绍
1️⃣ HAProxy
HAProxy 是一款稳定、高性能的 TCP/HTTP 负载均衡器,支持健康检查、SSL、连接池等,是流量分发的核心组件。
2️⃣ Keepalived
Keepalived 通过 VRRP(虚拟路由冗余协议)提供故障转移(Failover)能力。它负责维持一个 Virtual IP(VIP) 的主备绑定关系。
🔁二、整体架构图
+----------------------+
| Client (用户) |
+----------+-----------+
|
| 访问 VIP(如 192.168.1.100)
▼
+------------------------------------------+
| Virtual IP: 192.168.1.100 |
| (由 Keepalived 绑定在 Master 上) |
+--------------------+---------------------+
|
+------------+------------+
| |
+--------v--------+ +--------v--------+
| HAProxy 主节点 | | HAProxy 备节点 |
| Keepalived: Master | | Keepalived: Backup |
+-------------------+ +-------------------+
| |
▼ ▼
后端服务群组(如 Nginx / Web / API / DB 等)
🔍三、工作机制详解
✅ 正常情况下:
-
VIP(如
192.168.1.100
)绑定在 主节点(HAProxy + Keepalived Master)上; -
客户端所有请求都通过 VIP 访问主 HAProxy,后者将请求转发到后端服务;
-
主节点定期通过 VRRP 发送心跳信号给备节点,表明自己处于"存活"状态。
⚠️ 主节点宕机时:
-
Keepalived 检测不到心跳;
-
备节点自动接管 VIP,角色从 Backup 切换为 Master;
-
客户端请求继续通过相同的 VIP 发起,但实际上已由备节点 HAProxy 接管,实现无缝切换。
🛠️四、关键配置示例
1️⃣ Keepalived 主节点配置
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.1.100
}
}
2️⃣ Keepalived 备节点配置
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.1.100
}
}
3️⃣ HAProxy 简要配置
frontend http_front
bind *:80
default_backend servers
backend servers
balance roundrobin
server web1 192.168.1.201:80 check
server web2 192.168.1.202:80 check
✅五、为什么它能实现"高可用"?
-
VIP 不变,客户端感知不到主备切换;
-
Keepalived + VRRP 提供稳定的主备机制;
-
HAProxy 提供强大的健康检查 + 负载均衡能力;
-
整个集群冗余设计,即便一台节点宕机,系统依旧可用。
🧪六、测试验证建议
-
正常状态: 访问 VIP,确认主节点响应;
-
断开主节点网络/关闭 Keepalived: 确认 VIP 是否漂移至备节点;
-
恢复主节点后是否回抢: 测试
nopreempt
与preempt
的设置; -
观察日志:
journalctl -u keepalived
/haproxy -db -f /etc/haproxy/haproxy.cfg
。
📌七、总结与最佳实践
-
使用真实心跳 + VIP 接管机制 是高可用的本质;
-
VIP 配置不宜冲突,使用独立网卡或 IP 别名(如 eth0:1);
-
可配合 Redis、MySQL、Nginx 等后端服务共同部署高可用集群;
-
可以将 VIP 注册到 DNS 中,通过域名访问。
📚延伸阅读
如果你也在构建一套生产级的服务系统,这套 Keepalived + HAProxy 的方案值得首选,稳定、轻量、易部署,是企业私有云架构中的典范。
需要部署脚本、实战演练或集群 YAML 文件?欢迎评论区一起讨论!