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

LVS三种模式工作原理

常用负载均衡设备

实现负载均衡的技术的方式有哪些:硬件层面有F5负载均衡器,网络层层面有LVS(Linux Virtual Server),应用层层面就是nginx、Haproxy等。 lvs工作在网络层,nginx工作在应用层。

LVS有三种工作模式

lvs是由章文崇博士发明的,一开始只发明了NAT模式,但是这种模式下数据包的进出都要经过lvs调度器,当后端的web服务器超过20台的时候会导致lvs调度器容易出现瓶颈,为了解决lvs调度器的瓶颈问题,又发明了tunnel模式,tunnel模式中调度器和web服务器不再同一局域网,web服务器可以直接向客户端回复数据包,不再经过调度器,但是这种模式会进行多次封装和解封装的过程,会消耗lvs的性能和有网络延迟,随后又出现了DR模式才大大提高了lvs的性能。

名词解释:
CIP:客户机的ip地址
VIP:调度器(LVS)的虚拟ip地址
DIP:调度器(LVS)的真实ip地址
RIP:真实服务器(WEB_SERVER)的ip地址
RS : Realserver简称RS,真实服务器(WEB_SERVER),通常指后端地址池中的web服务器
LB: lvs调度服务器 Load Balacer

1、NAT模式原理
客户端将封装好的报文发送给lvs调度服务器,lvs调度服务器解封装报文后发现源ip是客户端ip,目标ip是VIP,于是lvs调度器根据算法从后端选择一台web服务器,并通过NAT转换将目标ip改为后端web服务器的ip,然后将报文发送给后端的web服务器,后端web服务器把处理完的报文发送给lvs调度服务器,然后lvs调度服务器再通过NAT转换将报文中的源ip改成VIP,目标ip改成客户端ip,并将报文封装好发送给客户端。
优点:后端RS可以只设置一个私有的ip地址应为调度器是通过NAT的方式把RS的流量转发出去的,这样做就不会把后端RS暴露出去,只需要一个公网ip就行。
缺点:后端RS扩展性有限,应为进出流量都要经过lvs调度器,就会导致lvs成为瓶颈导致用户访问变慢。
适用场景:公网ip比较少并且后端服务器需要隐藏起来的公司。
2、tunnel模式原理
客户端将封装好的报文发送给lvs调度服务器,lvs调度服务器解封装报文后发现源ip是客户端ip,目标ip是VIP,于是lvs调度器根据算法从后端选择了一台web服务器,并将报文重新封装到ip隧道里面,然后发送给后端的web服务器,(调度器和web服务器不在同一局域网所以要重新封装),web服务器收到报文后解封装,并且处理完数据后会将报文中的源ip改成VIP目标ip改成客户端ip,重新封装后再发给客户端。
优点:返回时不需要通过调度器,直接将请求发给客户端,这样就会减少调度器的压力,能代理更多的后端服务器。而且调度器和真实服务器之间不需要在同一网段,即使后端服务器是公网上的某台服务器也可以为它代理。
缺点:如果端服务器是一台云服务器的话,这台服务器需要有一个合法ip并且该服务器需要支持”IP Tunneling”(IP Encapsulation)协议,而有的linux系统是不支持ip  tunneling协议的。
适用场景:当公司有需求比如后端服务器不能在同一网段的情况下。
3、DR模式原理
客户端将封装好的报文发送给lvs调度服务器,lvs调度服务器解封装报文后发现源ip是客户端ip,目标ip是VIP,于是lvs调度器根据算法从后端选择了一台web服务器,并将报文中的目标MAC地址修改为web服务器的MAC地址,然后将报文直接发送给web服务器 (调度器和web服务器处于同一局域网所以不需要重新封装报文),web服务器处理完请求数据后,再将报文中的源ip改成VIP,目标ip改成客户端IP,最后重新封装报文不经过lvs直接发送给客户端。
优点:效率高、返回时无需通过lvs,直接将请求发给客户端,而且后端RS也是只设置一个内网ip就行,可以被很好的保护起来。
缺点:真实服务器和调度器必须在同一物理网段(不能跨vlan通信)
4、lvs的调度算法
常用的调度算法:
(1)轮询算法(RR):当后端服务器性能一样的情况下,采用轮询算法,每次调度器采用平均分配的形式将请求发送给后端服务器。
(2)加权轮询算法(WRR):当后端服务器A的性能不如B的时候,将给A分配权重为1,B的权重为2,每次调度器将请求分配给后端的时候,B收到的请求就是A的两倍。
(3)最小连接算法(LC):这种算法能动态地计算后端服务器的负载情况并把最新请求发送到当前链接数最小的RealServer上,能够动态地调整服务器的负载能力。
(4)hash算法(SH):类似nginx的ip_hash算法,会把来自同一个客户端的请求发送给相同的RealServer。
http://www.lryc.cn/news/467510.html

相关文章:

  • 【二轮征稿启动】第三届环境工程与可持续能源国际会议持续收录优质稿件
  • 网络安全——防火墙技术
  • Missing classes detected while running R8报错解决方案
  • 智能指针
  • 通过DevTools逃离Chrome沙盒(CVE-2024-6778和CVE-2024-5836)
  • 手持无人机飞手执照,会组装调试入伍当兵有多香!
  • 项目经理好累好烦啊,不想干了....
  • 论技术人员“技术人格”的重要意义
  • Kafka异常重试方案小记
  • 非页面缓冲池占用过高处理方法
  • 【Linux】进程信号(下)
  • FlinkCDC 实现 MySQL 数据变更实时同步
  • JavaWeb——Maven(4/8):Maven坐标,idea集成-导入maven项目(两种方式)
  • 实现uniapp天地图边界范围覆盖
  • 思科网络设备命令
  • Egg.js使用ejs快速自动生成resetful风格的CRUD接口
  • 自动化抖音点赞取消脚本批量处理
  • 基于YOLOv8深度学习的智能车牌检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
  • qt QGraphicsGridLayout详解
  • 数字处理系列
  • 基于开源Jetlinks物联网平台协议包-MQTT自定义主题数据的编解码
  • 【Python】Python2.7升级Python3
  • Python 内置函数 round() 详解
  • JavaScript入门中-流程控制语句
  • kconfig语法(一)
  • 十七、行为型(命令模式)
  • 原材料供应商的GRS认证证书过期了怎么办?
  • C++编程:实现一个基于原始指针的环形缓冲区(RingBuffer)缓存串口数据
  • LangChain 创始人万字科普:手把手教你设计 Agent 用户交互
  • Docker 用例:15 种最常见的 Docker 使用方法