LVS故障排查

一、故障分类与排查思路

LVS出问题,通常分四类:

  1. 网络层问题:比如VIP(虚拟IP)ping不通,或者后端服务器网络不通。

  2. 负载均衡问题:比如流量分配不均、会话保持失效、调度算法出问题。

  3. 服务层问题:比如后端服务挂了、健康检查没通过、端口冲突。

  4. 高可用问题:比如主备切换失败、脑裂(两台同时抢VIP)、ARP混乱。


二、常用命令速查

  • 看网络 :ipvsadm -Ln、ping VIP、ip a

  • 看服务 :ipvsadm -L -c、netstat -tunlp

  • 看统计 :ipvsadm -l --stats、ss -s

  • 看健康 :curl -I VIP、日志在 /var/log/ 下

  • 看ARP :arp -an、tcpdump arp


三、几个典型问题怎么解决

案例1:VIP访问不了

现象:客户端连不上VIP,但直接访问后端服务器没问题。

排查步骤:

  1. 看VIP有没有绑定:ip addr show | grep VIP,没有就手动加。

  2. 看ipvsadm服务是不是正常。

  3. 看ARP抑制配置对不对(arp_ignore 应为1)。

原因:服务器重启后VIP没自动绑定。

解决:在keepalived配置文件里写好VIP,重启服务。


案例2:流量分配不均

现象:10台后端服务器,3台忙得要死,其他闲着。

原因:所有服务器权重一样,但性能不同。

解决:调权重,性能好的给高权重,差的给低权重。


案例3:主备切换失败

现象:主节点挂了,备节点没接上VIP。

原因:网线松了,keepalived检测不到网络。

解决:修网线,加个监控脚本检测网卡状态,失败就降权触发切换。


四、配置优化建议

  • 开启IP转发:echo 1 > /proc/sys/net/ipv4/ip_forward

  • 关闭ARP响应(防冲突):设置 arp_ignore 和 arp_announce

  • 在RS上也要配置VIP,但要绑在 lo 上,防止抢VIP

  • 调度算法用 wrr 更灵活


五、调试技巧

  • 看LVS连接状态:ipvsadm -Lcn

  • 抓包分析:tcpdump host VIP

  • 看CPU中断分布:cat /proc/interrupts

  • 调大连接表:echo 4096 > /proc/sys/net/ipv4/vs/conn_tab_bits


六、Keepalived配置要点

  • 主备节点配置基本相同,只是 state 和 priority 不同

  • 健康检查可以用 TCP_CHECK,超时时间设短一点

  • 会话保持时间(persistence_timeout)别设太长,否则流量不均衡


七、自动化脚本

写个脚本定期检查后端服务是否正常,不正常的就从LVS里踢掉,恢复后再加回来。这样能自动处理小故障。


八、监控告警

可以用Prometheus监控LVS的连接数、后端健康状态、VIP是否可达。超过阈值就报警,比如:

  • 连接数飙升

  • 后端挂了

  • VIP ping不通


九、常见问题速查表

问题 检查点 解决
VIP不通 ARP、网卡 配好ARP,绑VIP
后端收不到请求 路由、lo接口 RS也要绑VIP
主备不切换 keepalived、网络 加双心跳线
部分客户端连不上 会话保持、防火墙 调timeout,放行端口
性能差 连接表、CPU 调大连接表,开启RSS

十、灾备恢复流程

  1. 主节点挂了,手动切到备:停主节点的keepalived,备节点恢复配置。

  2. 恢复配置:从备份里恢复ipvsadm和keepalived配置。

  3. 验证:检查VIP绑定,curl测试服务。


总结一句话:

LVS出问题,先看网络,再看配置,最后看后端服务。用好命令、配好监控、写好脚本,就能稳稳当当跑下去。

相关推荐
修己xj36 分钟前
服务器无法解析域名?一次 DNS 配置缺失的排查与修复
运维
xbzb6 小时前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
Android系统攻城狮6 小时前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
瑞克-桑切斯7 小时前
ERP 企业生产管理系统部署手册
运维·docker·云原生·容器·eureka
江屿风8 小时前
【Git-组件】【Git入门:从文档灾难到版本掌控】流食般投喂
运维·笔记·git·组件·版本控制
我不会起名字3228 小时前
K8s 节点磁盘打满导致 Pod 被驱逐:4 类占用与回收顺序
运维·kubernetes·k8s·diskpressure·evicted
雪落漂泊8 小时前
Linux进程(五):进程地址空间篇
linux·运维·服务器
瑞克-桑切斯8 小时前
docker mail商城
运维·docker·容器
AR-26710-9 小时前
Linux Day32——网络,ROCE-IB与以太网
linux·运维
不庸.9 小时前
WPScan 实战入门:从 Docker 靶场到弱密码爆破
运维·安全·web安全·docker·容器·安全性测试·wpscan