当前位置: 首页 > news >正文

LVS总结

LVS总结

一、LVS概念与工作原理

Director:负载调度器,整个集群的入口,运行IPVS内核模块

Real Server(RS):真实后端服务器,实际处理请求

VIP:对外暴露的虚拟服务地址

DIP:与内网通信用的IP

RIP:后端服务器的真实IP

CIP发起请求的客户端IP

IPVS:内核模块,LVS的核心实现

ipvsadm:用户态管理工具,用于配置IPVS规则

image 

LVS是基于linux内核的四层负载均衡解决方案,工作在网络层。

工作原理:LVS工作在TCP/IP第四层(传输层),在内核Netfilter框架的INPUT链上挂钩当数据包到达Director时,IPVS模块根据调度算法选取一台Real Server,修改数据包的目标地址/端口,然后转发出去,整个过程在内核态完成,不经过用户。

 

二、LVS三种集群模式

DR模式是生产环境首选,因为响应流量不经过Director,避免了带宽瓶颈。NAT模式最简单但Director容易成为瓶颈。TUN模式适合地理分布式部署。

image

 

image

 

三、LVS调度算法

image

 静态算法(不感知当前RS状态):

rr:请求依次分给各RS,无差别循环

wrr:按权重比例轮询,权重2:1则RS1获得2倍请求

sh:对客户端IP取哈希,同一IP用永远到同一RS

dh:对目标IP取哈希,用于正向代理缓存命中优化

 

动态算法(实时感知RS连接状态)

lc:选择活跃连接数+非活跃连接数最小的RS

wlc:选择(活跃连接x256 + 非活跃连接)/权重 最小的RS,默认算法

sed:选择 (活跃连接+1) ÷ 权重 最小的 RS,解决 wlc 对低权重 RS 不公平问题

nq:若有空闲 RS(活跃连接=0)则直接分配,否则退化为 sed

lblc:同一目标 IP 尽量分到同一 RS(缓存命中),负载过高时才调度到其他 RS

lblcr:lblc 的增强版,维护目标→RS 集合映射,提升缓存利用率

 

四、LVS配置文件解析

# /etc/ipvsadm.rules(Debian/Ubuntu)

# ---- 虚拟服务(Virtual Service)配置 ----
# 格式:-A -t <VIP:port> -s <scheduler> [options]

-A -t 192.168.1.100:80 -s wrr
# -A : Add(添加虚拟服务)
# -t : TCP协议(-u 表示UDP协议)
# 192.168.1.100 : VIP(虚拟IP,对外提供服务的地址)
# :80 : 服务端口
# -s wrr : 指定调度算法,wrr=加权轮询(默认wlc)
# 可选:rr|wrr|lc|wlc|sh|dh|sed|nq|lblc|lblcr

# ---- 真实服务器(Real Server)配置 ----
# 格式:-a -t <VIP:port> -r <RIP[:port]> -<模式> -w <权重>

-a -t 192.168.1.100:80 -r 192.168.1.10:80 -g -w 3
# -a : add-server(添加Real Server到虚拟服务)
# -t 192...100:80 : 指定所属的虚拟服务(VIP:port)
# -r 192.168.1.10:80 : Real Server的IP和端口(RIP:port)
# -g : 指定工作模式为 DR(Direct Routing,直接路由)
# -g = gateway/DR模式(修改MAC地址转发)
# -m = masquerading/NAT模式(修改目标IP转发)
# -i = ipip/TUN模式(IP隧道封包转发)
# -w 3 : 权重(weight),数值越大分配请求越多,0=不接受新连接

-a -t 192.168.1.100:80 -r 192.168.1.11:80 -g -w 1
# 权重1,相对第一台RS接受更少流量(适合配置较低的服务器)

# ---- 持久化连接(Persistence)配置 ----
-A -t 192.168.1.100:443 -s rr -p 300
# -p 300 : persistent(持久化连接超时时间,秒)
# 同一客户端在300秒内的请求都会分配到同一台RS
# 等效于会话保持(Session Persistence),无需sh算法

# ---- 持久化粒度控制 ----
-A -t 192.168.1.100:0 -s rr -p 600
# port=0 : 端口为0时表示对该VIP上所有端口进行持久化(FWM模式)
# 常与防火墙标记(-f <mark>)配合使用

# ---- 防火墙标记(FWM)模式 ----
-A -f 1 -s wlc -p 300
# -f 1 : 使用防火墙标记1,需配合iptables打标记
# iptables -t mangle -A PREROUTING -d 192.168.1.100 -j MARK --set-mark 1
# 实现跨端口(如80和443)的持久化会话

 

# ============================================================
# DR 模式下 Real Server 的必要配置(每台RS均需执行)
# ============================================================

# 抑制ARP广播(DR/TUN模式特有要求)
# 防止RS上配置的VIP响应ARP请求,导致流量绕过Director

# 方法一:修改内核参数(推荐)
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
# arp_ignore=1 : 仅响应目标IP是本网卡IP的ARP请求
# (默认0=对所有接口上的IP都响应ARP)

echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
# arp_announce=2 : 对外ARP通告时,只使用与目标IP在同一子网的源IP
# (默认0=使用任意IP通告,会导致VIP被RS抢占ARP)

# 在回环接口(lo)上配置VIP
ip addr add 192.168.1.100/32 dev lo
# /32 : 子网掩码必须是32位,避免系统认为VIP所在网段在lo口
# RS通过lo:0接收Director转发来的包,以VIP为源IP回复客户端

# 持久化写入 /etc/sysctl.conf
# net.ipv4.conf.all.arp_ignore = 1
# net.ipv4.conf.all.arp_announce = 2

# 方法二:使用NetworkManager(Rocky Linux 推荐)
nmcli con add type dummy ifname lvs-vip
nmcli con mod lvs-vip ipv4.addresses "192.168.1.100/32"

 

# ============================================================
# ipvsadm 常用管理命令
# ============================================================

ipvsadm -ln
# -l : list(列出当前所有虚拟服务和RS)
# -n : numeric(以数字形式显示IP和端口,不做DNS反解)

ipvsadm -ln --stats
# --stats : 显示连接统计信息(总连接数、包数、字节数)

ipvsadm -ln --rate
# --rate : 显示实时速率(CPS连接/秒、PPS包/秒、BPS字节/秒)

ipvsadm -D -t 192.168.1.100:80
# -D : Delete(删除虚拟服务及其所有RS)

ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.10:80
# -d : del-server(仅删除指定RS,不影响虚拟服务)

ipvsadm -E -t 192.168.1.100:80 -s lc
# -E : Edit(修改虚拟服务属性,如调度算法)

ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.10:80 -g -w 5
# -e : edit-server(修改RS属性,如权重)

ipvsadm --save > /etc/sysconfig/ipvsadm
# --save : 将当前规则保存到文件(用于持久化)

ipvsadm --restore < /etc/sysconfig/ipvsadm
# --restore : 从文件恢复规则(开机自动加载)

# 开机自动加载(CentOS/Rocky)
systemctl enable ipvsadm

 

# ============================================================
# Keepalived 中的 LVS 配置段(/etc/keepalived/keepalived.conf)
# 通常将 ipvsadm 规则集成到 Keepalived 中,实现高可用
# ============================================================

virtual_server 192.168.1.100 80 { # VIP 和端口
delay_loop 6 # 健康检查间隔(秒)
lb_algo wrr # 调度算法(同 -s 参数)
lb_kind DR # 工作模式:DR | NAT | TUN
persistence_timeout 50 # 持久化超时(秒),0=关闭
protocol TCP # 协议类型

real_server 192.168.1.10 80 { # RS1 的 RIP 和端口
weight 3 # 权重
HTTP_GET { # 健康检查方式
url {
path /health # 检查URL路径
status_code 200 # 期望的HTTP状态码
}
connect_timeout 3 # 连接超时(秒)
retry 3 # 失败重试次数
delay_before_retry 3 # 重试前等待(秒)
}
}

real_server 192.168.1.11 80 { # RS2 的 RIP 和端口
weight 1 # 权重较低(配置较弱的服务器)
HTTP_GET {
url {
path /health
status_code 200
}
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}

 

 

 

http://www.zskr.cn/news/1434270.html

相关文章:

  • 基于Arduino与超声波传感器的导盲辅助设备设计与实现
  • UE5 C++项目编译罢工别慌!手把手教你清理Binaries/Intermediate/Saved文件夹的正确姿势(附依赖库丢失修复)
  • 医疗健康IT转型:从混合云架构到数据中台与AI落地的实践路径
  • 别再只用 > 和 >> 了!Linux tee命令的5个实用场景,从日志记录到管道调试
  • AI率总超标?2026年AI论文网站排行榜权威发布,轻松达标不是梦!
  • 告别雷达误报!用Python手把手实现CFAR目标检测(附CA/OS算法对比)
  • 终极宽屏优化:让经典植物大战僵尸完美适配现代显示器
  • 硬核盘点!2026AI写作辅助平台大盘点(覆盖 99% 毕业生论文需求)
  • 树莓派笔记本改造:SMBus电池管理与Max1873/MP26123充电方案详解
  • Ctool深度解析:一站式开发者工具集的架构设计与加密解密实战指南
  • 别再手动分区了!用targetcli在CentOS 7上快速配置iSCSI共享存储(附完整命令清单)
  • Mac鼠标平滑滚动终极指南:如何用Mos实现触控板般的丝滑体验
  • Layerdivider终极指南:5分钟学会将图片自动分层为专业PSD文件
  • 专业级抖音批量下载工具实战指南:7大特性深度解析与高效配置技巧
  • Qwen3.7-Max:当Agent成为新范式,我们站在了AI应用的拐点
  • Steam游戏自动破解终极指南:三步告别DRM限制困扰
  • 温州AI搜索优化服务商2026深度评测:避坑选型指南 - 品牌报告
  • LinkSwift:3分钟搞定网盘下载,让你的文件传输回归正常速度
  • 2026滚塑产品生产厂家怎么选?本凡机械领衔,这些实力派值得关注 - 玖叁鹿
  • 智慧职教刷课脚本终极指南:3分钟实现自动化学习
  • Python自动化邮件系统:基于Google API的群发通知解决方案
  • 呼吸与基石:寻找中国技术的“气”(QiLink)
  • 2026网盘追剧实测!5大主流平台横向对比,谁是追剧天花板? - 品牌测评鉴赏家
  • 如何用甲言轻松处理古汉语:5个步骤开启文言文NLP之旅
  • 2026株洲黄金回收口碑榜单TOP5:湘奢汇天元店以中检认证领跑,同城报价实时接轨上金所 - 生活测评小能手
  • 别再到处找LiTS17数据集了!我整理了百度云链接和nii转PNG的保姆级代码
  • 广州黄埔区高空吊装公司全攻略 2026 最新价格与避坑指南 - 从来都是英雄出少年
  • 三步快速上手SakuraLLM:离线日中轻小说翻译终极指南
  • 深度解析Cursor Free VIP:突破AI编程助手使用限制的完整技术方案
  • GPT如何重塑电台与直播:从AI辅助到虚拟主播的行业变革