LVS 负载均衡群集

发布于:2025-05-31 ⋅ 阅读:(25) ⋅ 点赞:(0)

目录

LVS(Linux Virtual Server)基础知识

LVS核心概念与架构

一、LVS 群集应用基础

1. 群集技术

(1)概述

(2)群集的类型

(3)负载均衡的分层结构

(4)负载均衡的工作模式

(5)优势与局限性

2. LVS 虚拟服务器

(1)LVS 的负载调度算法

(2)使用 ipvsadm 管理工具

3. NFS 共享存储服务

(1)使用 NFS 发布共享资源

(2)在客户机中访问NFS共享资源

二、案例:地址转换模式(LVS-NAT)

 三、LVS-DR 集群

1. LVS-DR 工作原理

2. 数据包流向分析

3. LVS-DR 模式特点

4. LVS-DR 模式的优势与限制

LVS(Linux Virtual Server)基础知识

LVS核心概念与架构

  1. LVS定义与作用
    LVS(Linux Virtual Server)是由章文嵩博士开发的开源负载均衡解决方案,工作于网络四层(传输层),通过IP负载均衡技术将客户端请求分发到多个后端服务器(Real Server),提升系统的性能、可靠性和扩展性。

  2. 核心组件包括

    • Director Server(调度器):接收客户端请求并通过调度算法分配至后端服务器。

    • Real Server(真实服务器):实际处理请求的服务节点。

    • Virtual IP(VIP):对外暴露的虚拟IP地址,客户端通过VIP访问集群服务。

  3. LVS体系结构
    LVS集群分为三层:

    • 负载均衡层:由Director Server构成,负责请求调度。

    • 服务器池层:由多个Real Server组成,处理具体业务。

    • 共享存储层:提供数据一致性支持(如NFS、分布式文件系统)

一、LVS 群集应用基础

1. 群集技术

(1)概述
  • 定义:群集(Cluster)是通过多台服务器协同工作,对外表现为单一逻辑资源的技术。

  • 核心目标

    • 高可用性:避免单点故障,提升服务连续性。

    • 高性能:横向扩展处理能力,应对高并发请求。

    • 可扩展性:动态增减节点,灵活适应业务需求。

(2)群集的类型
类型 特点 典型场景
高可用群集(HA) 通过故障检测和转移实现服务不间断运行 数据库主从切换、Web 服务
负载均衡群集(LB) 将请求分发到多个节点,提升并发处理能力 Web 服务器集群
高性能计算群集(HPC) 并行处理大规模计算任务(如分布式计算) 科学计算、大数据分析
(3)负载均衡的分层结构
  • 四层负载均衡(L4):基于 IP + 端口 进行流量分发(如 LVS、F5)。

    • 优点:效率高,适用于 TCP/UDP 协议。

    • 缺点:无法识别应用层内容(如 HTTP 请求路径)。

  • 七层负载均衡(L7):基于 应用层内容 分发(如 Nginx、HAProxy)。

    • 优点:支持 URL、Cookie 等高级路由策略。

    • 缺点:处理延迟较高,适合 HTTP/HTTPS 协议。

(4)负载均衡的工作模式
  1. NAT模式(网络地址转换)

    • 原理:调度器修改请求报文的目标IP和端口为Real Server的地址,响应报文需经调度器返回客户端。

    • 特点

      • 支持端口映射,配置简单。

      • 请求和响应均需经过调度器,易成性能瓶颈(适合10节点以内)49。

    • 适用场景:小型内网集群,需高安全性的环境。

  2. DR模式(直接路由)

    • 原理:调度器仅修改请求报文的MAC地址,Real Server直接响应客户端(不经过调度器)。

    • 特点

      • 高性能,支持数百节点。

      • 要求Real Server与调度器在同一局域网,需配置ARP抑制(避免VIP冲突)59。

    • 适用场景:高并发Web服务、数据库集群。

  3. TUN模式(IP隧道)

    • 原理:通过IP隧道封装请求报文,Real Server可跨网络部署,响应直接返回客户端。

    • 特点

      • 支持异地灾备,扩展性强。

      • 配置复杂,需支持隧道协议(如Linux的IPIP)46。

    • 适用场景:分布式系统、跨数据中心负载均衡。

(5)优势与局限性
  1. 优势

    • 高性能:基于内核态转发,支持百万级并发连接69。

    • 高可用:结合Keepalived实现故障转移,保障服务连续性510。

    • 灵活扩展:支持动态增减节点,适应业务增长18。

  2. 局限性

    • 四层限制:无法处理应用层协议(如HTTP头部解析),需配合Nginx或HAProxy实现七层负载均衡69。

    • 配置复杂度:DR模式需手动配置ARP抑制,TUN模式依赖隧道协议支持45。

2. LVS 虚拟服务器

(1)LVS 的负载调度算法
算法 原理 适用场景
轮询(RR) 按顺序轮流分配请求到各节点 节点性能均衡
加权轮询(WRR) 根据节点权重分配请求(权重越高,分配越多) 节点性能差异较大
最少连接(LC) 将新请求分配给当前连接数最少的节点 长连接服务(如数据库)
加权最少连接(WLC) 结合节点权重和连接数分配请求(默认算法) 通用场景
源地址哈希(SH) 根据客户端 IP 哈希值固定分配请求到特定节点 需要会话保持的应用
  1. 静态调度算法

    • 轮询(RR):按顺序分配请求,适合服务器性能相近的场景79。

    • 加权轮询(WRR):根据服务器权重分配请求,权重高的节点处理更多流量710。

    • 源地址哈希(SH):固定将同一源IP的请求分配至同一服务器,用于会话保持69。

  2. 动态调度算法

    • 最小连接(LC):优先分配至连接数最少的服务器,均衡实时负载710。

    • 加权最小连接(WLC):结合服务器权重和连接数,默认推荐算法69。

    • 基于局部性的调度(LBLC/LBLCR):针对目标IP分配请求,提升缓存命中率(如CDN集群)710。

(2)使用 ipvsadm 管理工具
--安装
yum install ipvsadm -y  # CentOS  
apt-get install ipvsadm -y  # Ubuntu  

--常用命令
# 添加虚拟服务(VIP: 192.168.1.100:80,使用轮询算法)  
ipvsadm -A -t 192.168.1.100:80 -s rr  

# 添加真实服务器节点(RIP: 192.168.1.101:80,DR 模式)  
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g  

# 查看当前规则  
ipvsadm -Ln  

# 删除虚拟服务  
ipvsadm -D -t 192.168.1.100:80  

3. NFS 共享存储服务

(1)使用 NFS 发布共享资源
安装nfs:
yum install nfs-utils rpcbind -y  
systemctl start rpcbind nfs-server  
systemctl enable rpcbind nfs-server 
netstat -anpt | grep rpc       --查看进程是否启动 

创建共享目录并配置权限:
mkdir /data  
chmod 777 /data  

编辑 /etc/exports 文件:
/data 192.168.1.0/24(rw,sync,no_root_squash)  # 允许 192.168.1.0/24 网段读写  

生效配置
exportfs -r  
(2)在客户机中访问NFS共享资源
安装 NFS 客户端工具
yum install nfs-utils -y  # CentOS  
apt-get install nfs-common -y  # Ubuntu  
 
挂载共享目录
# 创建本地挂载点  
mkdir /mnt/nfs  
# 挂载 NFS 共享  
mount -t nfs 192.168.1.100:/data /mnt/nfs

验证挂载
df -hT  # 查看挂载状态  
touch /mnt/nfs/test.txt  # 测试读写权限   

开机自动挂载:
echo "192.168.1.100:/data /mnt/nfs nfs defaults 0 0" >> /etc/fstab  

二、案例:地址转换模式(LVS-NAT)

在 NAT 模式的群集中,LVS 负载调度器是所有节点访问Internet 的网关服务器,其外网地址172.16.16.172 同时作为整个群集的VIP地址。LVS调度器具有两块网卡,分别连接内外网。

 101(调度器)、102 103(web)、104(nfs)、105(客户端)

--LVS 调度器
#安装管理lvs的管理工具(lvs属于内核都有的)
dnf install ipvsadm
ipvsadm -v  #查看安装结果

# 开启路由转发规则
vi /etc/sysctl.conf
    net.ipv4.ip_forward = 1
sysctl -p   #重载

#添加网卡,配置IP(仅主机模式,模拟外网IP)
cd /etc/sysconfig/network-scripts
cp
vim /etc/sysconfig/network-scripts/ifcfg-ens37
172.16.16.172       --"#"网关DNS,改网卡名
nmcli c reload
nmcli c up ens37   

#配置负载分配策略
ipvsadm -C  //清楚原有策略
ipvsadm -A -t 172.16.16.172:80 -s wrr
ipvsadm -a -t 172.16.16.172:80  -r 192.168.10.102:80 -m -w 1
ipvsadm -a -t 172.16.16.172:80  -r 192.168.10.103:80 -m -w 1
ipvsadm --save  //保存策略
ipvsadm -ln  --查看

#重启服务
systemctl restart ipvsadm
systemctl enable ipvsadm
systemctl  stop firewalld
--web服务器
#安装并开启
dnf -y install httpd
systemctl stop firewalld
setenforce 0
systemctl start httpd

#测试页面
vim /var/www/html/index.html

#设置网关(10.101)
vim /etc/sysconfig/network-scripts/ifcfg-ens33

#重启网卡
nmcli c reload   #内核重载
nmcli c up ens33
--NFS部署
#安装
dnf -y install nfs-utils rpcbind
#共享目录创建
mkdir /opt/wwwroot
vim /etc/exports
	/opt/wwwroot  192.168.10.0/24 (rw,sync,no_root_squash)
#启动服务
systemctl start nfs
netstat -anpt | grep rpc       --查看进程是否启动
showmount -e   --看本地发布的共享目录

--web服务器
#安装
dnf -y install rpcbind nfs-utils
#挂载(记得关防火墙)
mount   192.168.10.104:/opt/wwwroot /var/www/html


--测试
#客户端测试通过调度器访问web
curl  172.16.16.172
#通过NFS管理web测试页面,验证一下挂载
修改内容,再次访问

 三、LVS-DR 集群

1. LVS-DR 工作原理

LVS-DR(Direct Routing,直接路由)是 LVS 的高性能负载均衡模式,其核心思想是:

  • 调度器(Director)仅处理入站请求,通过修改请求报文的目标 MAC 地址将请求转发给真实服务器(Real Server)。

  • 真实服务器直接通过自己的网络接口将响应报文发送给客户端,绕过调度器。

  • 关键前提:所有真实服务器必须与调度器位于同一物理网络(同一广播域),且需配置 VIP(Virtual IP) 并抑制 ARP 响应。

2. 数据包流向分析

以下以客户端访问 VIP:80 为例,分析 LVS-DR 模式下完整的数据包路径:

步骤 1:客户端发起请求
  • 客户端(IP: 10.0.0.5)向 VIP:80 发送 TCP 请求报文:

    | 源 IP: 10.0.0.5 | 源 MAC: Client_MAC | 目标 IP: 192.168.1.100 | 目标 MAC: Director_MAC |  
  • 网络行为:客户端通过默认网关发送 ARP 请求,获取 VIP 的 MAC 地址(调度器的 MAC)。

步骤 2:调度器接收并转发请求
  • 调度器(Director)收到请求后:

    1. 根据负载均衡算法(如 WLC)选择一台 Real Server(假设为 192.168.1.101)。

    2. 修改目标 MAC:将请求报文的目标 MAC 改为 Real Server 的 MAC(RS1_MAC)。

    3. 不修改 IP:源 IP 和目标 IP 保持不变。

    | 源 IP: 10.0.0.5 | 源 MAC: Director_MAC | 目标 IP: 192.168.1.100 | 目标 MAC: RS1_MAC |  
  • 网络行为:调度器通过二层交换机将报文转发给选中的 Real Server。

步骤 3:真实服务器处理请求
  • Real Server192.168.1.101)收到报文后:

    1. 确认目标 IP 是本地绑定的 VIP(需配置在 lo 接口)。

    2. 处理请求(如生成 HTTP 响应)。

    3. 直接响应客户端:使用 VIP 作为源 IP,通过默认路由(不经过调度器)返回响应。

    | 源 IP: 192.168.1.100 | 源 MAC: RS1_MAC | 目标 IP: 10.0.0.5 | 目标 MAC: Client_MAC |  
  • 网络行为:Real Server 通过网关直接将响应发送给客户端。

步骤 4:客户端接收响应
  • 客户端收到响应,认为数据来自 VIP:80,完成一次完整通信。

3. LVS-DR 模式特点

特点 说明
高性能 响应数据不经过调度器,吞吐量高(适合高并发场景)。
低延迟 仅处理入站请求,调度器负载低。
配置复杂度 需在真实服务器配置 VIP 和 ARP 抑制规则。
网络限制 所有节点必须位于同一局域网(同一广播域)。
扩展性 支持数百台真实服务器节点。

4. LVS-DR 模式的优势与限制

优势 限制
高性能:响应不经过调度器,吞吐量高。 要求 Real Server 与调度器在同一局域网。
低延迟:仅修改 MAC 地址,处理速度快。 需手动配置 ARP 抑制和 VIP 绑定。
支持大规模集群:可扩展至数百节点。 不支持跨网段部署(需 TUN 模式)。

5. 路由模式(LVS-DR)部署

环境准备
  • 调度器(Director):1 台,IP 地址 192.168.10.101(DIP),VIP 192.168.10.172

  • 真实服务器(Real Server):2 台,IP 地址 192.168.10.102192.168.1.103,均绑定 VIP。

  • 客户端:IP 地址 192.168.10.105

    101:
    #设置虚拟IP
    cd /etc/sysconfig/network-scripts/
    cp ifcfg-ens33 ifcfg-ens33:0
    vim ifcfg-ens33:0
        NAME=ens33:0
        DEVICE=ens33:0
        ONBOOT=yes
        IPADDR=192.168.10.172
        NETMASK=255.255.255.255   //注意:子网掩码必须全为1
    #重启
    nmcli c reload
    nmcli c up ens33
    #验证配置
    ifconfig
    
    #下载管理工具
    dnf -y install ipvsadm
    #关闭防火墙
    systemctl stop firewalld
    setenforce 0
    #设置策略
    ipvsadm -C   --清除策略
    ipvsadm -A -t 192.168.10.172:80 -s wrr   --添加虚拟服务器,为加权轮询方式
    ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1   --添加真实服务器,为路由模式
    ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 2   --
    ipvsadm --save
    
    102,103:
    #基础环境部署
    dnf -y install httpd
    vim /var/www/html/index.html   --测试页面  || echo "dsdsadas">/var/www/html/index.html
    
    systemctl stop firewalld
    systemctl disable firewalld
    systemctl start httpd
    systemctl enable httpd
    
    ###部署VIP
     ip addr add 192.168.10.172/32 dev lo label lo:0   --在lo回环设置IP,用于本地网络通信
    --192.168.10.172/32  主机只有一个,它自己就是广播、主机,避免与其他主机IP冲突,设在回环接口上,让它承载
    ###添加路由
    --临时生效
    ip route add local 192.168.10.172/32 dev lo   --添加路由规则,通过回环接口进行处理
    --永久生效
    vim /etc/rc.local
    	ip addr add 192.168.10.172/32 dev lo label lo:0
    	ip route add local 192.168.10.172/32 dev lo
    chmod +x /etc/rc.local  --执行权限
    reboot  --重启
    
    ifconfig  --查看
    route  -n   --查看路由
    
    #改内核(路由没成功)
    vim /etc/sysctl.conf  
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2
    net.ipv4.conf.default.arp_ignore = 1
    net.ipv4.conf.default.arp_announce = 2
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.lo.arp_announce = 2
    
    sysctl -p   --重载文件
    
    
    105客户端:
    arp -n   --查看iP 与 MAC 地址映射关系
    curl 192.168.10.172   --访问
    
    --NFS部署
    #安装
    dnf -y install nfs-utils rpcbind
    #共享目录创建
    mkdir /opt/wwwroot
    vim /etc/exports
    	/opt/wwwroot  192.168.10.0/24 (rw,sync,no_root_squash)
    #启动服务
    systemctl start nfs
    netstat -anpt | grep rpc       --查看进程是否启动
    showmount -e   --看本地发布的共享目录
    
    #设置网页内容(会同步)
    echo "<h1>104104104</h1>">>/opt/wwwroot/index.html
    
    #客户端测试
    curl 192.168.10.172


网站公告

今日签到

点亮在社区的每一天
去签到