LVS 负载均衡群集实战指南

本文基于 Linux Virtual Server(LVS)技术,完整覆盖群集基础、LVS 原理、NFS 共享存储、LVS-NAT 模式部署,保留文档全部实操代码,补充原理、选型、排错等扩展知识点,内容不重复且更易落地。

一、LVS 负载均衡群集核心基础

1.1 群集三大类型

  • 负载均衡群集(LB):提升并发处理能力,分散请求,降低延迟,典型场景:Web、APP 服务。
  • 高可用群集(HA):保障服务不中断,故障自动切换,典型场景:数据库、网关。
  • 高性能运算群集(HPC):分布式并行计算,对标超级计算机,典型场景:科学计算、AI 训练。

补充知识点 :企业常用LB+HA 融合架构,既分流又保可用,LVS+Keepalived 是标准组合。

1.2 负载均衡三层架构

  1. 负载调度器(Director):唯一入口,绑定 VIP,分发请求,支持主备热备。
  2. 服务器池(Real Server):提供真实业务,用 RIP,只处理调度器转发的请求。
  3. 共享存储 :保证所有节点数据一致,Linux 环境首选NFS

补充知识点:VIP(虚拟 IP)是群集对外统一入口,Real Server 无需暴露公网 IP。

1.3 LVS 三种工作模式

表格

模式 全称 结构 特点 适用场景
NAT 地址转换 调度器是网关,请求 / 响应都经调度器 仅 1 个公网 IP,安全高,配置简单 中小型网站、内网服务
TUN IP 隧道 节点分散各地,响应直接回客户端 跨地域,性能高,配置复杂 跨机房、全球分发
DR 直接路由 调度器与节点同网段,响应直接回客户端 性能最强,无隧道开销 大型高并发 Web 服务

补充知识点DR 模式性能>TUN>NAT,企业 90% 场景用 DR;NAT 是入门首选,最易部署。

二、LVS 核心原理与工具

2.1 LVS 内核模块

LVS 是 Linux 内核原生模块(ip_vs),无需额外编译,CentOS/openEuler 默认支持。

bash

运行

复制代码
# 加载ip_vs模块
modprobe ip_vs
# 查看模块版本
cat /proc/net/ip_vs

2.2 四大负载调度算法

  1. 轮询(rr):请求轮流分配,不看服务器负载。
  2. 加权轮询(wrr):按权重分配,性能高的节点权重设大。
  3. 最少连接(lc):优先分给连接数最少的节点。
  4. 加权最少连接(wlc):结合权重 + 连接数,适配异构服务器。

补充知识点 :Web 服务首选rr/wrr ;长连接服务(如 SSH、游戏)首选lc/wlc

2.3 ipvsadm 管理工具(全命令)

ipvsadm是 LVS 用户态管理工具,负责增删虚拟服务、节点、保存策略。

bash

运行

复制代码
# 安装ipvsadm(openEuler/CentOS通用)
dnf install -y ipvsadm  # openEuler
yum install -y ipvsadm  # CentOS
# 查看版本
ipvsadm -v
核心命令清单

bash

运行

复制代码
# 1. 清除所有原有策略
ipvsadm -C
# 2. 创建虚拟服务器(VIP+端口+算法)
ipvsadm -A -t 192.168.74.129:80 -s rr
# 3. 添加真实服务器节点(-m=NAT模式,-w=权重)
ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.102:80 -m -w 1
ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.103:80 -m -w 1
# 4. 查看群集状态(数字格式,不解析域名)
ipvsadm -ln
# 5. 查看客户端连接详情(排错必备)
ipvsadm -lnc
# 6. 删除单个真实节点
ipvsadm -d -r 192.168.10.103:80 -t 192.168.74.129:80
# 7. 删除整个虚拟服务器
ipvsadm -D -t 192.168.74.129:80
# 8. 保存策略(永久生效)
ipvsadm-save > /etc/sysconfig/ipvsadm
# 9. 开机自启+重启服务
systemctl enable --now ipvsadm
systemctl restart ipvsadm

补充知识点-m=NAT、-g=DR、-i=TUN,模式参数必须正确,否则群集失效。

三、NFS 共享存储部署(群集数据统一)

NFS 是 LVS 群集标配共享存储,保证所有 Web 节点页面 / 数据一致。

3.1 NFS 服务端配置

bash

运行

复制代码
# 1. 安装依赖包
yum install -y nfs-utils rpcbind
# 2. 设置开机自启
systemctl enable nfs-server rpcbind
# 3. 创建共享目录
mkdir -p /opt/wwwroot
# 4. 配置共享规则(允许192.168.10.0/24网段读写)
echo "/opt/wwwroot 192.168.10.0/24(rw,sync,no_root_squash)" >> /etc/exports
# 5. 先启动rpcbind,再启动nfs(顺序不能错)
systemctl start rpcbind
systemctl start nfs-server
# 6. 查看本机共享目录
showmount -e

配置文件说明

  • rw:读写权限;ro:只读
  • sync:同步写入,数据安全;async:异步写入,性能高
  • no_root_squash:客户端 root 保留本地 root 权限(生产谨慎用)

3.2 NFS 客户端(Web 节点)配置

bash

运行

复制代码
# 1. 安装依赖
yum install -y nfs-utils rpcbind
systemctl enable --now rpcbind
# 2. 查看服务端共享目录
showmount -e 192.168.10.104
# 3. 手动挂载到Web根目录
mount 192.168.10.104:/opt/wwwroot /var/www/html
# 4. 开机自动挂载(/etc/fstab)
echo "192.168.10.104:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0" >> /etc/fstab
# 5. 验证挂载
df -h | grep nfs

补充知识点_netdev参数必须加,代表网络设备,避免开机未联网就挂载导致启动失败。

四、LVS-NAT 模式实战部署(超详细步骤)

4.1 实验环境规划

表格

角色 系统 IP 地址 核心服务
LVS 调度器 openEuler 24.03 内网:192.168.10.101;外网 VIP:192.168.74.129 ipvsadm、路由转发
Web1 节点 openEuler 24.03 192.168.10.102 httpd、NFS 客户端
Web2 节点 openEuler 24.03 192.168.10.103 httpd、NFS 客户端
NFS 存储 openEuler 24.03 192.168.10.104 nfs-server、rpcbind

前提条件:所有服务器关闭防火墙、SELinux

bash

运行

复制代码
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

4.2 LVS 调度器配置

步骤 1:开启内核路由转发(NAT 模式必须)

bash

运行

复制代码
# 临时开启
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久开启
vi /etc/sysctl.conf
# 添加/修改
net.ipv4.ip_forward = 1
# 生效
sysctl -p
步骤 2:配置双网卡(内网 + 外网 VIP)

bash

运行

复制代码
# 外网网卡配置(VIP:192.168.74.129)
vi /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=static
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.74.129
NETMASK=255.255.255.0
# 重启网络
ifdown ens36 && ifup ens36
# 验证IP
ifconfig ens36
步骤 3:配置 LVS 负载策略

bash

运行

复制代码
# 清除旧策略
ipvsadm -C
# 创建VIP虚拟服务(80端口,轮询算法)
ipvsadm -A -t 192.168.74.129:80 -s rr
# 添加Web1、Web2节点(NAT模式,权重1)
ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.102:80 -m -w 1
ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.103:80 -m -w 1
# 保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
# 开机自启
systemctl enable --now ipvsadm

4.3 Web 节点服务器配置(Web1/Web2 相同)

步骤 1:修改网关为 LVS 调度器内网 IP

bash

运行

复制代码
# 删除默认网关
route del default gw 192.168.10.254
# 添加新网关(LVS内网IP)
route add default gw 192.168.10.101
# 永久修改网关
vi /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.10.101
# 重启网络
ifdown ens33 && ifup ens33
步骤 2:部署 httpd + 挂载 NFS

bash

运行

复制代码
# 安装Apache
yum install -y httpd
# 创建测试页面
echo "<h1>LVS-NAT Web Server 1</h1>" > /var/www/html/index.html  # Web1
echo "<h1>LVS-NAT Web Server 2</h1>" > /var/www/html/index.html  # Web2
# 启动httpd
systemctl enable --now httpd
然后去厕所发现是按加权轮询或者轮询显示的页面 那么成功!!!


然后下面部署统一页面:
yum -y install nfs-utils (web1和web2)
# 挂载NFS共享存储
mount 192.168.10.104:/opt/wwwroot /var/www/html  (web1和web2)

然后在nfs服务器上创建统一页面
vim /opt/www/root/index.html
test

然后重启,找个客户机做测试

4.4 测试 LVS-NAT 群集

  1. 客户端浏览器访问:http://192.168.74.129
  2. 多次刷新,页面交替显示Web Server 1/2,说明负载均衡生效
  3. LVS 调度器查看状态:

bash

运行

复制代码
ipvsadm -ln
ipvsadm -lnc

五、补充核心知识点(生产必备)

  1. LVS-NAT 瓶颈:调度器是流量入口 + 出口,高并发时易成瓶颈,适合中小型业务。
  2. 节点健康检查 :原生 LVS 无健康检查,需配合Keepalived实现节点宕机自动剔除。
  3. 端口映射 :LVS 支持非 80 端口,如ipvsadm -A -t 192.168.74.129:8080 -s rr
  4. 保持连接-p 60参数,60 秒内同一客户端请求分配到同一节点:

bash

运行

复制代码
ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.102:80 -m -w 1 -p 60
  1. 权重调整:权重 0 代表节点暂停,不分配请求:

bash

运行

复制代码
ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.102:80 -m -w 0

六、常见排错思路

  1. 无法访问 VIP:检查 LVS 路由转发是否开启、防火墙 / SELinux 是否关闭。
  2. 请求只分配到一个节点:检查调度算法、权重、节点网关是否正确。
  3. NFS 挂载失败 :检查服务端/etc/exports、网络连通性、rpcbind是否启动。
  4. ipvsadm 策略丢失 :未执行ipvsadm-save,重启后规则清空,必须保存。
相关推荐
Run_Teenage2 小时前
Linux:进程间通信-System V 共享内存
linux·运维·服务器
木子欢儿2 小时前
Ubuntu 24.04 执行超微服务器 JNLP 程序
linux·运维·服务器·ubuntu
我不是立达刘宁宇2 小时前
测试哥斯拉的使用
运维
TechMasterPlus2 小时前
agent-browser 技术深度解析:Vercel 推出的 AI 时代浏览器自动化利器
运维·人工智能·自动化
_下雨天.7 小时前
LVS负载均衡
服务器·负载均衡·lvs
特长腿特长10 小时前
centos、ubantu系列机的用户和用户组的结构是什么?具体怎么配置?用户组权限怎么使用?这篇文章持续更新,帮助你复习linux的基础知识
linux·运维·centos
zzzyyy53810 小时前
Linux环境变量
linux·运维·服务器
赛博云推-Twitter热门霸屏工具12 小时前
Twitter运营完整流程:从0到引流获客全流程拆解(2026)
运维·安全·自动化·媒体·twitter
CHHC188012 小时前
NetCore树莓派桌面应用程序
linux·运维·服务器