keepalived通过配置virtual_server和real_server实现四层负载均衡,依赖ipvs内核模块将vip流量分发至多台真实服务器,支持dr/nat/tun模式及多种健康检查方式。

Keepalived 本身不直接“配置虚拟服务器”来实现多点负载,它不创建或管理后端应用服务(比如 Nginx、Tomcat),而是通过调用 Linux 内核的 IPVS(即 LVS)模块,在四层(传输层)对流量进行调度,把客户端请求分发到多个真实服务器(Real Server)——这才是“多点负载”的实质。
所以准确说:Keepalived 配置的是 LVS 调度器(Director),并定义一组后端真实服务器池,由 IPVS 执行实际的负载分发。整个过程无需在 Keepalived 配置中写“虚拟服务器实例”,而是通过 virtual_server + real_server 块声明服务入口(VIP:Port)和后端节点。
关键配置结构:LVS 模式下的 virtual_server
Keepalived 的负载均衡功能全部集中在 virtual_server 区块中,必须配合 ipvsadm 内核模块生效。典型配置片段如下:
virtual_server 192.168.1.100 80 {
delay_loop 6 # 健康检查间隔(秒)
lb_algo wrr # 调度算法:加权轮询
lb_kind DR # 工作模式:DR(推荐)、NAT 或 TUN
persistence_timeout 50 # 会话保持时间(秒),0 表示关闭
protocol TCP # 协议类型
real_server 192.168.1.10 80 {
weight 3 # 权重,影响分发比例
inhibit_on_failure # 故障时自动从 IPVS 中剔除
HTTP_GET { # 健康检查方式(也可用 TCP_CHECK、SSL_GET)
url {
path /health # 检查路径
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.11 80 {
weight 2
inhibit_on_failure
HTTP_GET {
url { path /health }
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
✅ 这里
192.168.1.100:80就是对外暴露的“虚拟服务地址”,也就是你所说的“虚拟服务器”;
✅ 后面两个real_server就是参与负载的“多点”,权重决定流量分配比例(如 3:2);
✅ Keepalived 自动调用ipvsadm -A/-a等命令将该配置同步到内核 IPVS 表。
必须配套的操作与前提
-
启用 IPVS 内核模块
确保系统已加载:modprobe ip_vs modprobe ip_vs_wrr # 对应 wrr 调度算法 modprobe ip_vs_dr # 对应 DR 模式(若使用)
-
真实服务器需适配工作模式
- 若用 DR 模式:所有 RS 必须配置 VIP 到 lo 接口,并抑制 ARP 响应(避免冲突);
- 若用 NAT 模式:RS 默认网关需指向 Director,无需额外配置 VIP;
- 模式选择直接影响性能与网络拓扑,DR 是高并发首选。
健康检查要真实有效
/health接口不能是静态文件(易缓存误判),建议由后端服务动态返回状态码;
若用TCP_CHECK,只需端口通即可,适合无 HTTP 服务的场景(如 MySQL、Redis)。
多虚拟服务支持:可定义多个 virtual_server
一个 Keepalived 实例可同时管理多个 VIP+Port 组合,例如:
virtual_server 192.168.1.100 80 { ... } # Web 流量
virtual_server 192.168.1.100 3306 { ... } # 数据库流量(MySQL)
virtual_server 192.168.1.100 443 { ... } # HTTPS
每个 virtual_server 独立配置后端池、算法、检查策略,互不影响。
注意事项:不是所有“虚拟服务器”都靠 Keepalived 创建
- Keepalived 不替代 Nginx/HAProxy 做七层代理,也不起 Web 服务;
- 它只负责:VIP 漂移(高可用) + IPVS 规则下发(四层负载) + 健康探测;
- 如果你要做“多点负载 + SSL 终止 / URL 路由 / 限流”,那需要 Keepalived + Nginx(或 HAProxy)组合,前者管 VIP 和主备,后者管七层逻辑。
不复杂但容易忽略。











