如何利用 Keepalived 结合 LVS 构建四层与七层混合负载均衡架构

云雪君_9498

云雪君_9498

2026-05-26

1059人浏览

原创

LVS+Keepalived作四层高可用入口,分发流量至Nginx/HAProxy七层集群,兼顾性能与HTTP级调度能力;LVS无法解析HTTP内容,故Web业务必须依赖七层代理实现URL路由、HTTPS卸载等功能。

如何利用 keepalived 结合 lvs 构建四层与七层混合负载均衡架构

Keepalived 结合 LVS 构建四层与七层混合负载均衡架构,核心思路是:用 LVS(+Keepalived)做前端四层高可用入口,再把流量分发给后端七层代理(如 Nginx 或 HAProxy),由它们完成基于 HTTP/HTTPS 的精细调度(URL、Header、Cookie 等)。这种分层设计兼顾了四层的高性能和七层的灵活性,也规避了单点瓶颈。

为什么必须分层:LVS 不替代 Nginx

LVS 工作在内核态,只处理 TCP/UDP 连接转发(IP+Port),无法解析 HTTP 请求内容;Nginx 或 HAProxy 运行在用户态,能读取并分析完整 HTTP 报文。因此:

  • 纯 LVS + Keepalived 只能实现四层负载,适合透传、长连接、非 Web 类服务(如数据库代理、游戏网关)
  • Web 业务需要 URL 路由、动静分离、HTTPS 卸载、限流鉴权等功能,必须依赖七层代理
  • 若只用 Keepalived + Nginx 主备,Nginx 成为单点瓶颈,且无法横向扩展对外 IP
  • LVS 做 VIP 入口 + 多台 Nginx 横向集群,才是可伸缩的生产级方案

LVS 层:配置 DR 模式 + Keepalived 高可用

两台 LVS 服务器(master/backup)共用一个 VIP(如 192.168.11.218),采用 DR(Direct Routing)模式——性能最优,响应包不经过 LVS,直接由后端 Nginx 返回客户端。

  • 确保所有节点(LVS、Nginx、Web)在同一二层网络,Nginx 必须配置 VIP 的 lo 接口别名,并禁用 ARP 响应(arp_ignore=1, arp_announce=2)
  • Keepalived 配置中 state MASTER/BACKUP、priority、virtual_router_id 主备需一致,VIP 写在 virtual_ipaddress 块
  • virtual_server 定义 VIP:Port(如 192.168.11.218:80),real_server 指向 Nginx 服务器真实 IP(如 192.168.11.213:80),权重按实际负载能力设置
  • 健康检查建议用 TCP_CHECK(快速)或自定义 HTTP_GET(更准),避免仅靠端口存活误判服务状态

Nginx 层:作为七层负载均衡器集群

每台 Nginx 接收来自 LVS 的请求,再根据业务规则将流量分发到后端 Web 应用(如 PHP、Java、静态资源)。

  • 启用 upstream 模块,定义多个 Web 节点(如 web1:8080、web2:8080),支持轮询、ip_hash、least_conn、weight 等策略
  • 在 server 块中使用 proxy_pass 转发,注意设置 proxy_set_header Host $host 等关键头,避免后端丢失原始信息
  • 可开启 proxy_cache 缓存静态资源,减轻后端压力;配合 proxy_next_upstream 实现自动故障转移
  • 若需 HTTPS,推荐在 Nginx 层统一卸载 SSL,LVS 仍走纯 TCP(443 端口),简化 LVS 配置并提升性能

关键细节与避坑提示

混合架构看似清晰,实操中几个细节极易出错:

  • ARP 配置遗漏:Nginx 节点未配置 lo:0 绑定 VIP 或未调优内核参数,导致响应包被网关丢弃或回包路径异常
  • 会话保持错位:LVS 层设了 persistence_timeout(如 300 秒),但 Nginx 层又用 ip_hash,可能造成双重绑定,建议只在 Nginx 层做会话控制
  • 健康检查粒度不足:LVS 默认只检查端口通不通,若 Nginx 进程活着但 upstream 全挂,流量仍会进来。应在 Nginx 层加 health_check 或用外部探针联动
  • 日志溯源困难:LVS 后的 Nginx 日志中,$remote_addr 显示的是 LVS 的 IP,需在 LVS 配置中开启 forward(DR 模式下默认已保留客户端源 IP)并确保 Nginx 启用 set_real_ip_from 和 real_ip_header X-Forwarded-For
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

20

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

20

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

20

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

20

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

20

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习