【负载均衡】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地址

相关推荐
小宇的天下2 分钟前
Virtuoso 中的tech file 详细说明
java·服务器·前端
Hi202402176 分钟前
使用Smokeping监控公网服务器质量
运维·服务器·php·smokeping
萧技电创EIIA9 分钟前
两台PLCModbusTCP主从站连接,一主站,一从站
运维·服务器
prettyxian12 分钟前
【Linux】环境变量
linux·运维·服务器
Zoey的笔记本18 分钟前
「软件开发缺陷管理工具」的闭环追踪设计与自动化集成架构
java·服务器·前端
愈努力俞幸运19 分钟前
f12网络教程 客户端 服务端 服务器前端 后端
运维·服务器
MediaTea23 分钟前
Python OOP 设计思想 13:封装服务于演化
linux·服务器·前端·数据库·python
xinxinhenmeihao26 分钟前
使用长效代理是否存在安全风险?长效代理适合哪些应用场景?
服务器·网络·安全
济6171 小时前
linux 系统移植(第四期)--Uboot移植(4)--在U-Boot 中添加自己的开发板(3) -网络驱动修改-- Ubuntu20.04
linux·运维·服务器
翼龙云_cloud1 小时前
阿里云渠道商:阿里云弹性伸缩混合管理指南
服务器·阿里云·云计算