当前位置: 首页 > news >正文

负载均衡LB》》LVS

在这里插入图片描述
LO 接口

LVS简介

LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器集群,它具有良好可靠性、可扩展性和可操作性,从而以低廉的成本实现最优的服务性能。目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,
LVS工作模式分为NAT模式、TUN模式、以及DR模式。

LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址**,用户必须通过这个虚拟的IP地址访问服务**。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。
  当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,而Real Server节点如何返回数据给用户,是IPVS实现的重点技术,IPVS实现负载均衡机制有三种,分别是NAT、TUN和DR.

LVS 核心组件和专业术语

# 核心组件
LVS  的  管理工具ipvsadm 和  内核模块  ipvs
ipvsadm :用户空间的命令行工具,用于管理集群服务及集群服务上的RS(Real Server 后端的真实服务器)等
ipvs: 工作于内核上的程序,可根据用户定义的集群实现请求转发#  专业术语
VS:Virtual Server   虚拟服务
DR、DS:Director,Balancer   负载均衡器、分发器
RS:Real Server    后端请求处理的真实服务器
CIP:Client IP   用户端IP
#  负载均衡器 有两个IP  VIP,DIP
VIP:Director Virtual IP   负载均衡器虚拟IP
DIP: Director IP          负载均衡器IP
RIP: Real Server IP   后端请求处理真实服务器IP

LVS负载均衡器4种工作模式

LVS-NAT 》》网络地址转换模式
进站、出站的数据流程都经过DS(DR)负载均衡器(IP负载均衡,修改的是IP地址),利用网络层(三层)
LVS-DR》》直接路由模式
只有进站的数据流程经过DS(DR)负载均衡器(数据链路层负载均衡,修改的是目的MAC地址),利用数据链路层(二层)
LVS-TUN 》》隧道模式
只有进站的数据流程经过DS(DR)负载均衡器
LVS-full-nat》》双向转换模式
通过请求报文的源地址为DIP,目标为RIP来实现转发
对应响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发

资料

网络地址转换模式》》NAT模式

原理
DS(DR)负载均衡器把客户端发来的数据包的IP头的目标地址,在DS(DR)负载均衡器上换成其中一个RS的IP地址,并发至RS来处理,
RS处理完成后,
把数据交给经过DS(DR)负载均衡器,DS(DR)负载均衡器再把数据包的源IP改成自己的VIP
①源CIP——>目VIP (客户端向——DS(DR)负载均衡器 通信)
②目VIP——>改成RIP(DS(DR)负载均衡器中做转换)
(DS(DR)负载均衡器中做转换)——>RS 通信
③源RIP——>目DIP(RS——负载均衡器 通信)
④源RIP——>改成VIP(处理完成之后,DS(DR)负载均衡器中再转换)
(DS(DR)负载均衡器中做转换)——>客户端通信

优点
集群中的物理服务器(RS服务器),可以使用任何支持TCP/IP操作系统,只有(DS(DR)负载均衡器)需要一个合法的IP(VIP)地址
不足
扩展性有限,当服务器节点(普通PC服务器)增长过多时,(DS(DR)负载均衡器)将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过(DS(DR)负载均衡器)。当服务器节点过多时,大量的数据包都交会在(DS(DR)负载均衡器),速度就会变慢

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

直接路由模式》》DR 模式

直接路由模式则应该是工作在数据链路层上(二层)
arp协议
在这里插入图片描述

1、当用户请求到达Director Server (DS,负载均衡器),此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP;
2、检查发现数据包的目标IP是本机,将数据包送至INPUT链;
3、IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址;
4、由于DS和RS在同一个网络中,所以是通过二层,数据链路层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server;
5 、RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP;
6、响应报文最终送达至客户端。

# DR 原理
DS(DR)负载均衡器和RS都使用同一个IP(即VIP)对外服务,但只有DS(DR)负载均衡器对ARP请求进行响应,所有RS对本身这个IP(VIP)的ARP请求保持静默(就是不理它),也就是说,网关会把这个服务IP(VIP)的请求全部定向给DS(DR)负载均衡器,而DS(DR)负载均衡器收到数据包后根据调度算法(当然前提IPVS会判断是否是集群,只有集群才会用到调度算法了)。找出对应的RS,
把, 源MAC(即CIP的MAC)————>改成DIP的MAC, 目的MAC(即VIP的MAC)————>改为RS的RIP的MAC,并将请求分发给这台RS。这时RS收到这个数据包,处理完成之后,由于IP(VIP)是一致,可以直接将数据返给客户端,则等于直接从客户端接收到这个数据包无异,处理后直接返回给客户端。
**优点:**与TUN模式(隧道模式)一样,DS(DR)负载均衡器也只是分发请求,应答包通过单独的路由方法返回客户端,与TUN相比,DR模式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器
**不足:**要求DS(DR)负载均衡器的网卡必须与物理网卡在一个网段上(DS(DR)负载均衡器到RS 是通过MAC地址通信的)。
# DR模式的特点
1、DS(DR)和所有RS 都要配置 VIP 
2、RS的RIP 可以使用私有IP,也可以共有IP,RIP、DIP要在同一网段(因为需要通过MAC通信)
3、RIP的网关不能指向DIP,以确保响应报文不会通过DS(DR)负载均衡器,减少流量。
4、RS和DS(DR)负载均衡器要在同一个物理网络
5、请求报文经过DS(DR)负载均衡器,但响应报文不经过DS(DR)负载均衡器,而由RS直接发往请求方(client端)

在这里插入图片描述

在这里插入图片描述

TUN 隧道模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#  DS 配置
ip addr  add dev ens33 172.30.164.181/32
systemctl start ipvsadm
ipvsadm -A -t 172.30.164.181:80 -s rr
ipvsadm -a -t 172.30.164.181:80 -r 172.30.164.139 -g
ipvsadm -a -t 172.30.164.181:80 -r 172.30.164.66 -g
ipvsadm -S > /etc/sysconfig/ipvsadmipvsadm -ln# RS配置
ip addr  add dev lo 172.30.164.181/32  #  VIP 
# 忽略ARP
# 临时关闭
echo 1> /proc/sys/net/ipv4/conf/all/arp_ignore  
#
echo 1> /proc/sys/net/ipv4/ip_forward
/etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.arp_ignore=1# 匹配精确IP地址回包
echo 2> /proc/sys/net/ipv4/conf/all/arp_announce

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.xdnf.cn/news/944497.html

相关文章:

  • 【仿生机器人】建模—— 图生3D 的几个办法
  • STM32 _main 里做了什么
  • Leetcode4(寻找两个正序数组的中位数)
  • 前端小程序面试题
  • Notepad++ 官方下载
  • uniapp 小程序 学习(一)
  • 生信服务器 | 做生信为什么推荐使用Linux服务器?
  • C/CPP 结构体、联合体、位段内存计算 指南
  • 总结input标签的各种类型
  • 可视化预警系统:如何实现生产风险的实时监控?
  • 篮球杯软件赛国赛C/C++ 大学 B 组补题
  • GC1808:高性能音频ADC的卓越之选
  • Web APIS Day01
  • 超低成本U型光电开关红外对射管检测电路
  • 基于单片机的宠物屋智能系统设计与实现(论文+源码)
  • 力扣HOT100之栈:394. 字符串解码
  • 256bps!卫星物联网极低码率语音压缩算法V3.0发布!
  • docker容器保存为不依赖基础镜像的独立镜像方法
  • 【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
  • 深入剖析AI大模型:大模型时代的 Prompt 工程全解析
  • Jenkins自动发布C# EXE执行程序
  • Unity中的对象池ObjPool/PoolManager
  • 安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
  • 基于Python的气象数据分析及可视化研究
  • Python打卡训练营学习记录Day49
  • C++11智能指针
  • Linux入门(十五)安装java安装tomcat安装dotnet安装mysql
  • 虚拟机网络不通的问题(这里以win10的问题为主,模式NAT)
  • Python爬虫(52)Scrapy-Redis分布式爬虫架构实战:IP代理池深度集成与跨地域数据采集
  • 使用 C# 将 Word、Excel、PDF 和 PPT文档转换为 Markdown 格式