LVS 负载均衡群集

目录

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值