【负载均衡】LVS原理与配置

1. LVS

1.1 LVS概念

LVS是Linux 虚拟服务器,是一个内核级别的负载均衡器(LB),工作在 OSI 第4层(传输层)。

1.2 作用

  • 为后端分流,后端压力可以均衡

  • 提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能

  • LB的负载分配依赖于主节点的分流算法

1.3 三大组件

  • 负载调度器 (Load Balancer):接收所有客户端请求
  • 服务器池 (Server Pool):多台真实服务器
  • 共享存储 (Shared Storage):保证数据一致性

1.4 LVS 三种工作模式

- NAT 模式(网络地址转换)

特点:

  • 请求和响应都经过负载调度器
  • 真实服务器使用私有 IP
  • 调度器修改数据包的目标/源地址
- DR 模式(直接路由)

特点:

  • 请求经过调度器,响应直接返回客户端
  • 高性能,调度器无瓶颈
  • 真实服务器需要配置 VIP 和 ARP 抑制
- TUN 模式(IP隧道)

特点:

  • 通过 IP 隧道传输数据
  • 调度器和真实服务器可以跨网段
  • 配置复杂,性能较好

1.5 LVS 调度算法

- 静态调度算法
  • rr (Round Robin):轮询
  • wrr (Weighted RR):加权轮询
  • sh (Source Hashing):源地址哈希
  • dh (Destination Hashing):目标地址哈希
- 动态调度算法
  • lc (Least Connections):最少连接
  • wlc (Weighted LC):加权最少连接 ⭐最常用
  • lblc (Locality-Based LC):基于局部性的最少连接
  • lblcr (Locality-Based LC with Replication):带复制的基于局部性最少连接

2. NAT

2.1 NAT概念

网络地址转换,是一种IP地址转换技术,用于在私有网络和公共网络之间转换IP地址。

2.2 核心功能

  • 地址转换:私有IP ↔ 公有IP
  • 端口转换:端口映射和重定向
  • 连接共享:多台设备共享一个公网IP

3. 集群

3.1 集群概念

集群是将多台计算机组合起来,作为一个整体向用户提供服务的系统架构。

3.2 核心目标

  • 高可用性:服务永不中断
  • 可扩展性:随需求增加节点
  • 负载均衡:合理分配工作负载
  • 容错能力:单点故障不影响整体

3.3 集群的三种主要类型

- 高可用集群(HA Cluster)

目的:确保服务持续可用

- 负载均衡集群(LB Cluster)

目的:分散请求压力

- 高性能计算集群(HPC Cluster)

目的:并行处理大规模计算

4.LVS实验配置

  • 基础环境

    ① 共3台服务器, LVS *1 后端服务器 *2 windows主机 *1

    内网网段:192.168.40.0 255.255.255.0

    外网网段:192.168.65.0 255.255.255.0

    LVS 网卡1:ens33_ip 192.168.65.131 外网网关 VMnet8 NAT模式

    LVS 网卡2: ens35_ip 192.168.40.128 内网网关 VMnet1 仅主机模式

    后端服务器1 网卡:ens33_ip 192.168.40.129 内网 VMnet1 仅主机模式 网关指向LVS内网网卡

    后端服务器2 网卡:ens33_ip 192.168.40.130 内网 VMnet1 仅主机模式 网关指向LVS内网网卡

    windows主机:网关指向LVS外网网卡

  • LVS环境

    ② LVS服务器环境

    开启防火墙、清空规则

    开启net 转发功能(/etc/sysctl.conf net.ipv4.ip_forward)

    开启防火墙

    systemctl start firewalld

    清除防火墙规则

    iptables -t nat -F
    iptables -F

    配置SNAT转发规则

    vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1

    刷新生效

    sysctl -p

    #自定义路由转发规则,将所有192.168.40.0/24网段的流量全部映射为192.168.65.131的地址
    iptables -t nat -A POSTROUTING -s 192.168.40.0/24 -o ens33 -j SNAT --to-source
    192.168.65.131

  • 后端服务器环境

    ③ 后端服务器

    关闭防火墙、核心防护、配置本地仓库,下载httpd

    关闭防火墙:

    systemctl disable firewalld --now
    setenforce 0

    搭建本地yum仓库

    安装httpd

    yum install -y httpd

    更改两个后端服务器中hppd中页面内容

    vi /var/www/html/index.html

    this is httpd01

    启动两台后端服务器的httpd

    systemctl start httpd

  • 搭建

    LVS服务器:

    安装外网并开启lvs 管理工具 ipvsadm

    设置防火墙nat 地址映射功能,把内网网段的数据报转为外网的IP

    ipvsadm 清理规则(ipvsadm -C)

    ipvsadm 设置外网访问入口与负载策略

    ipvsadm 定义后端地址池位置

    ipvsadm 直接启动

    HTTPD 服务器:

    下载、开启httpd 后,修改网页,方便验证时分辨lvs的轮循规则

    复制代码
    # 安装ipvsadm 管理工具
    yum -y install ipvsadm
    
    # 启动服务前须保存负载分配策略+
    ipvsadm-save > /etc/sysconfig/ipvsadm
    
    # systemctl start ipvsadm.service
    
    # 配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
    ipvsadm -C
    ipvsadm -A -t 192.168.65.131:80 -s rr
    ipvsadm -a -t 192.168.65.131:80 -r 192.168.40.129:80 -m
    ipvsadm -a -t 192.168.65.131:80 -r 192.168.40.130:80 -m
    
    # 启用策略
    ipvsadm 
    
    # 查看节点状态,Masq代表 NAT模式
    ipvsadm -ln 
    
    # 保存策略
    ipvsadm-save > /etc/sysconfig/ipvsadm 
  • 验证

    在LVS服务器上可以curl访问到后端的2台服务器网页

    在windows的浏览器可以通过访问LVS地址,观测到内网的2台httpd地址

相关推荐
乌恩大侠1 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
Mr.朱鹏1 小时前
Linux 服务器 LVM 根分区在线动态扩容
linux·服务器·数据库
mengge.cloud2 小时前
存储技术基础小白教程
linux·运维·服务器·wpf·存储
tang777893 小时前
反爬虫场景下代理IP池的动态扩容与失效IP自动清理方案实现
linux·服务器·网络·爬虫代理·住宅代理ip
新时代牛马3 小时前
Linux 系统调用与IPC 完整篇:从syscall 入口、VDSO 到pipe/shm/futex 选型
linux·运维·服务器
小HANN5 小时前
Linux建站实战:CentOS7+LNMP 从零部署 ECShop 开源电商系统
linux·运维·服务器·经验分享
三8446 小时前
SSRF 从入门到实战:原理、危害与基础利用
服务器·网络安全·ssrf·#web安全
平原20187 小时前
GPT Image 2 / Nano Banana API成本拆解:$0.0081、84.7%与单张有效成本
linux·服务器·gpt
T1mzhou7 小时前
ARM64 Linux 6.10内核启动流程2-rootfs 怎么挂上
linux·服务器·前端
2301_815091017 小时前
TCP 并发服务器模型:4 种 IO 模型完整梳理
服务器·网络·tcp/ip