lvs基于四层端口转发,本质是通过匹配vip:port与rip:port映射关系,按调度算法分发tcp/udp流量;配置核心为ipvsadm定义虚拟服务、绑定rs并指定nat(-m)、dr(-g)或tun(-i)模式。

LVS 实现基于端口的流量转发,本质是通过四层(传输层)规则匹配目标 IP + 端口组合,再按调度策略分发到后端真实服务器。它不解析应用层内容,只依据 TCP/UDP 报文头中的源/目标 IP 和端口号做快速转发,因此配置核心在于定义“虚拟服务”(VIP:Port)与“真实服务器”(RIP:Port)的映射关系,并指定工作模式和调度算法。
明确虚拟服务入口(VIP:Port)
所有客户端请求必须指向同一个对外暴露的虚拟 IP 和端口,比如 192.168.1.100:80。这个 VIP 是 LVS 调度器绑定的地址,也是用户实际访问的地址。需确保该 IP 已正确配置在调度器网卡上(如 eth0),且网络可达。
- 若使用 NAT 模式,VIP 通常为公网或内网可路由地址;DR 模式下 VIP 必须和 RS 在同一网段,且不能被 RS 响应 ARP 请求(需禁用 arp_announce/arp_ignore)
- 端口可任意指定,如 80、443、3306、53 等,LVS 对协议无感知,TCP/UDP 均支持
- 一个 VIP 可绑定多个端口(如同时配置 :80 和 :443),每组需单独添加虚拟服务
添加虚拟服务并选择调度算法
使用 ipvsadm 工具创建虚拟服务条目,指定协议类型(-t 表示 TCP,-u 表示 UDP)、VIP:Port 和调度方式:
-
ipvsadm -A -t 192.168.1.100:80 -s rr:添加 TCP 类型虚拟服务,启用轮询(rr)算法 -
ipvsadm -A -t 192.168.1.100:443 -s wrr -w 2:添加 HTTPS 服务,加权轮询,权重设为 2 - 常用算法包括 rr(轮询)、wrr(加权轮询)、lc(最少连接)、wlc(加权最少连接)等
关联后端服务器(RIP:Port)并指定转发模式
为每个虚拟服务添加真实服务器节点,关键在于 -m(NAT)、-g(DR)、-i(TUN)参数,它们决定数据包如何改写:
- NAT 模式(-m):请求目标 IP 改为 RIP,响应源 IP 改回 VIP;RS 默认网关必须指向 DIP
- DR 模式(-g):仅改写 MAC 地址,RS 需配置 VIP 并抑制 ARP 响应;响应直接返回客户端,不经过 LVS
- 端口可映射:如 VIP:80 → RS:8080,命令中写
-r 192.168.2.11:8080 -m
示例(NAT 模式):ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.11:80 -mipvsadm -a -t 192.168.1.100:80 -r 192.168.2.12:8080 -m
验证与持久化配置
配置完成后,用 ipvsadm -Ln 查看规则是否生效,确认 Protocol、VIP:Port、Flags、Scheduler、Real Server 列表完整显示。注意:
- Linux 内核需加载
ip_vs模块(modprobe ip_vs) - NAT 模式必须开启 IP 转发:
echo 1 > /proc/sys/net/ipv4/ip_forward,并写入/etc/sysctl.conf - 规则默认不保存,重启后失效;可用
ipvsadm -S > /etc/sysconfig/ipvsadm导出,配合 systemd 或 init 脚本自动恢复











