LVS(Linux Virtual Server)是一个高性能、高可用的服务器负载均衡解决方案,通过IP层负载均衡技术将请求分发到后端真实服务器(Real Server,RS),从而实现系统扩展性和可靠性,LVS的核心组件包括Director(调度器)、Real Server(真实服务器)和Client(客户端),其工作模式主要分为NAT(网络地址转换)、DR(直接路由)和TUN(隧道)三种,掌握LVS命令是管理和优化负载均衡的关键,以下从命令分类、参数详解及实际应用场景展开说明。

LVS管理命令基础
LVS的管理主要通过ipvsadm
工具实现,该工具是Linux内核中IPVS模块的管理接口,安装后,可通过ipvsadm -h
查看帮助信息,其基本语法结构为ipvsadm [选项] [命令] [参数]
,常用选项包括-A
(添加虚拟服务)、-D
(删除虚拟服务)、-E
(修改虚拟服务)、-L
或-l
(列表显示)、-C
(清空规则)等。
虚拟服务管理命令
虚拟服务(Virtual Service)是LVS的核心概念,定义了客户端访问的IP地址、端口及调度算法。
-
添加虚拟服务
命令格式:ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-r server-address] [-g|i|m] [-w weight]
-t
:TCP协议服务,格式为VIP:Port
-u
:UDP协议服务,格式同上-f
:Firewall Mark,基于防火墙标记的调度-s
:调度算法,如rr
(轮询)、wrr
(加权轮询)、lc
(最少连接)、wlc
(加权最少连接)等-p
:持久化服务,timeout单位为秒-w
:设置Real Server的权重,影响调度分配比例
示例:添加一个基于TCP的虚拟服务,VIP为192.168.1.100,端口80,使用加权轮询算法,持久化时间为300秒:
ipvsadm -A -t 192.168.1.100:80 -s wrr -p 300
(图片来源网络,侵删) -
修改和删除虚拟服务
修改已存在的虚拟服务:ipvsadm -E -t 192.168.1.100:80 -s lc
删除虚拟服务:ipvsadm -D -t 192.168.1.100:80
Real Server管理命令
Real Server是后端提供实际服务的服务器,需通过ipvsadm
添加到虚拟服务中。
-
添加Real Server
命令格式:ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
-g
:DR模式(直接路由)-i
:TUN模式(隧道)-m
:NAT模式(默认)
示例:在NAT模式下添加两个Real Server,IP分别为192.168.2.10和192.168.2.11,权重分别为1和2:
ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.10:80 -m -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.11:80 -m -w 2
(图片来源网络,侵删) -
删除Real Server
ipvsadm -d -t 192.168.1.100:80 -r 192.168.2.10:80
状态查看与统计
-
查看规则列表
ipvsadm -L -n
:以数字形式显示所有规则,包括虚拟服务、Real Server及连接数。
ipvsadm -L -c
:显示当前实时连接状态。
ipvsadm -L --stats
:显示详细统计信息,如连接数、数据包数等。 -
保存与恢复规则
保存规则到文件:ipvsadm -S > /etc/ipvs/rules
从文件恢复规则:ipvsadm -R < /etc/ipvs/rules
调度算法详解
LVS支持的调度算法主要分为静态和动态两类,以下为常用算法对比:
调度算法 | 类型 | 特点 | 适用场景 |
---|---|---|---|
rr(轮询) | 静态 | 按顺序分配请求,不考虑服务器负载 | 服务器性能相近 |
wrr(加权轮询) | 静态 | 根据权重分配请求,权重高的服务器接收更多请求 | 服务器性能差异较大 |
lc(最少连接) | 动态 | 将请求分配给当前连接数最少的服务器 | 请求持续时间长且不均衡 |
wlc(加权最少连接) | 动态 | 结合权重和连接数分配,默认算法 | 通用场景,兼顾性能与负载 |
lblc(本地最少连接) | 动态 | 基于本地性的最少连接,适用于缓存服务器 | 需要保持会话一致性的场景 |
实际应用示例
假设一个Web服务集群,VIP为192.168.1.100:80,后端有3台Real Server(192.168.2.10-12),使用DR模式,调度算法为wlc,操作步骤如下:
- 添加虚拟服务:
ipvsadm -A -t 192.168.1.100:80 -s wlc -p 600
- 添加Real Server:
ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.10:80 -g -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.11:80 -g -w 2
ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.12:80 -g -w 3
- 查看规则:
ipvsadm -L -n
相关问答FAQs
Q1: LVS的NAT、DR、TUN三种模式有什么区别?如何选择?
A1: NAT模式通过Director修改请求和响应的IP地址,Real Server需与Director在同一网段,配置简单但可能成为性能瓶颈;DR模式Real Server直接响应客户端,需绑定VIP,适合大规模部署;TUN模式通过隧道传输,Real Server可分布在不同地域,但需额外支持隧道协议,选择时,若服务器在同一局域网且对性能要求高,优先DR模式;若需跨地域部署,选择TUN模式;简单场景可用NAT模式。
Q2: 如何监控LVS集群的健康状态?
A2: 可通过ipvsadm -L --stats
查看Real Server的连接数和错误数,结合keepalived
实现健康检查,自动剔除故障节点,使用ipvsadm -L -c
可实时监控连接状态,或通过/proc/net/ip_vs_stats
文件获取详细统计信息,结合Zabbix等监控工具实现可视化告警。