LVS详细介绍,这么讲不信你不明白负载均衡

news2024/9/29 21:21:55

Linux virtual server,是一个基于集群技术和Linux操作系统,目的是实现一个高性能、高可用的服务器,主要工作在网络层。

他采取IP负载均衡,也叫三层负载均衡(因为工作在OSI模型的第三层--网络层),简单来讲就是通过修改请求的目标的IP地址来进行分配任务,将收录进来的信息分配到真正的server上去进行技术实现。当然这不是唯一的打开方式~

所以下面我们来一起看一下LVS实现负载均衡的几种方式:
LVS实现负载均衡的技术一般来讲有这三种,即VS/NAT、VS/TUN和VS/DR。

一. NAT

NAT就是Network Address Translation的缩写,就是最基础的通过进行网络地址转换,将一些server转化成一个可以有高性能的服务器。

具体的细节流程是这样走的:
用户使用一个虚拟的IP地址使用网络服务的时候,这是load balancer会收到报文,同时负责在下线中选择一台合适的下端来处理这个报文,这一步是通过选择的算法实现的。
然后,真正的转化在这里:这个负载均衡器就会把报文的目标地址的虚拟服务IP地址改成选中的这个服务器的IP地址。

注意一下, 这时候选定的服务器的端口数目,还有报文的端口数目也要相对应上。

修改好了报文,这时候负载均衡器就会把报文发送给这个百里挑一的服务器进行任务的加工处理。

二. TUN

TUN 是 Tunneling的缩写,其实就是通过隧道的方式来进行虚拟服务器的构建。

简单来说,这里的负载均衡器的作用就是通过IP隧道的封装方式连接每一个下端的服务器,进行任务分配。而且这种分装不是一对一,而是一组对一个,高吞吐量和高效快捷,所以适合用于移动主机和私有虚拟网络。

而IP隧道封装就是把一个报文和他的IP地址封装转发到另一个报文去。

听起来有点抽象,我们不妨这样想:NAT在通过负载均衡器发给服务器的时候,需要加一个新的IP头, 但是这里就不需要。这里的负载均衡器只需要将包裹好的封装打开,然后发给服务器就好了。

而且在这里,数据反馈给user的时候不需要传输回去给负载均衡器,而是通过外网的IP直接发给客户了。
对比一下NAT, 这时候的负载均衡器和服务器都有唯一且不同的IP地址。

三. DR

终于到了最后,是我们的DR, Direct Routing,即直接路径的方式进行虚拟服务器的实现。

这个方法和前两种略显不同,是由于他需要物理性质的构造连负载均衡器和每一个下端的服务器。这个物理属性的构造可以是交换机,或者HUB。

正如他的名字一般,这时候的负载均衡器所做的工作还是首先选一个服务器,然后直接将报文发给服务器,不改虚拟IP地址也不封装!

除此之外还需要将数据帧的MAC地址改为服务器的MAC地址。

有人会问,什么是数据帧:数据帧就是在每一个虚拟IP的包里面。服务器处理的时候看到每一个数据帧的MAC地址来确保一定会处理和收到这个数据帧,然后在检查他们的虚拟IP,最终返回一个X虚拟IP包。

而报文因为VIP地址前后一致,所以不需要再进行任何其他的处理和修改,就可以直接不经过负载均衡器返还给客户。

三种方式,各有千秋,详情可以见下面的图标汇总:

_VS/NATVS/TUNVS/DR
ServeranyTunnelingNon-arp device
server networkprivateLAN/WANLAN
server numberlow (10~20)High (100)High (100)
server gatewayload balancerown routerOwn router

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96462.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java计算机毕业设计springboot+vue旅游攻略平台

项目介绍 目前,我国旅游业正处于高度发展的状态。越来越多的人在假日里选择出游作为放松自己身心的手段。随着网络的普及和发展,人们开始习惯性地在做某事之前先在网络上浏览相关的内容。旅游网站能够帮助游客了解景点相关信息,推出相应的线路信息供游客们选择,并查看相应的旅…

计算机网络实验——路由器的配置静态与RIP配置

前言 由于几个资料和老师给的ppt说的都不清楚,自己也没想到什么很巧妙的归纳方法,写个总结记录一下。 想必静态路由配置的过程中唯一的难点就是ip route这个指令,其他的什么添加接口,设置ip啥的都是基础路由配置中的内容&#xf…

2023春招面试专题:JAVA基础高频面试

ArrayList和LinkedList有哪些区别 ArrayList扩容机制: ArrayList() 会使用长度为零的数组ArrayList(int initialCapacity) 会使用指定容量的数组public ArrayList(Collection<? extends E> c) 会使用 c 的大小作为数组容量add(Object o) 首次扩容为 10&#xff0c;再次…

3D激光里程计其一:ICP

这里写目录标题1. ICP 整体流程2. ICP 的数学表示3. 基于 SVD 的 ICP3.1 旋转部分求解3.2 平移部分求解4. 基于优化的 ICP5. ICP 系列汇总Reference: 深蓝学院-多传感器融合 1. ICP 整体流程 目的&#xff1a;有两个相似的刚体点云&#xff0c;它们之间没有做好配准&#xff…

Golang原理分析:闭包及for range延迟绑定问题原理及解决

1.Golang中的闭包 1.1.什么是闭包 当一个函数引用了环境的变量&#xff0c;被引用的变量与该函数同时存在组成的系统&#xff0c;被称为闭包。 闭包 环境的变量 函数。 以下JavaScript代码展示了一个基础的闭包&#xff1a; name是init函数中的内部变量displayName()是i…

机器学习 鸢尾花(Iris Flower)数据集分析

目录 一&#xff1a;加载数据 二&#xff1a;提取特征数据 三&#xff1a;提取标签数据 四&#xff1a;数据划分 一&#xff1a;加载数据 加载数据&#xff0c;查看数据特征 from sklearn.datasets import load_iris# 1 加载数据 鸢尾花load_iris iris_datasets load_iri…

数据校验及在数据校验的情况下增加headers拿回数据

什么是数据校验&#xff1a; 当你向一个数据端口请求数据时&#xff0c;如果这个数据端口没有设置&#xff1a;Access-Control-Allow-Origin&#xff1a;*&#xff0c;那就是存在跨域限制了&#xff0c;你是拿不回来数据的。图示&#xff1a; 但是有些数据端口是设置了 Access…

【JS ES6】了解学习set类型和weakset类型

✍️ 作者简介: 前端新手学习中。 &#x1f482; 作者主页: 作者主页查看更多前端教学 &#x1f393; 专栏分享&#xff1a;css重难点教学 Node.js教学 从头开始学习 ajax学习 目录set类型与array和object的区别set元素检测与管理类型转换的重要性遍历set类型的方式使用set…

Spring - 事件监听机制 源码解析

文章目录Pre概述ApplicationEvent ------ 事件ApplicationListener ------ 事件监听器ApplicationEventPublisher ------ 事件发布者ApplicationEventMulticaster ------ 事件广播器spring主要的内置事件ContextRefreshedEventContextStartedEventContextStoppedEventContextCl…

设计模式概述之单例模式(四)

很多小伙伴&#xff0c;不知道设计模式是什么&#xff1f; 通常我们所说的设计模式是一种设计方案&#xff0c;是前人留下的经验及最佳实践。 想要学习设计模式&#xff0c;至少要把面向对象的基本结构全部了解。 设计模式&#xff0c;是建立在一定基础上的思维训练。 学习…

喜报 | 中关村发来贺电

2022年12月14日&#xff0c;由中关村金融科技产业发展联盟、中关村互联网金融研究院举办的“中关村金融科技系列活动——2023第十届中关村金融科技论坛年会暨2022“光大杯”中关村番钛客金融科技国际创新大赛颁奖典礼”已圆满落幕。本次会议为建设金融科技中心&#xff0c;共建…

【Pintos】实现自定义 UserProg 系统调用

&#x1f4ad; 写在前面&#xff1a;本文讲解的内容不属于 Pintos 的 Project 项目&#xff0c;而是关于 userprog 如何添加系统调用的&#xff0c;学习如何额外实现一些功能到系统调用中以供用户使用。因为涉及到 src/example 下的Makefile 的修改、lib 目录下 syscall-nr 系统…

搜索二叉树详解

&#x1f9f8;&#x1f9f8;&#x1f9f8;各位大佬大家好&#xff0c;我是猪皮兄弟&#x1f9f8;&#x1f9f8;&#x1f9f8; 文章目录一、搜索二叉树框架二、搜索二叉树概念三、搜索二叉树操作①Erase②Find递归③Insert递归④Erase递归&#xff0c;比Erase更简洁⑤析构函数⑥…

unity学习笔记--day01

今天学习制作了一个简单的抽卡功能&#xff0c;学习结束后目录结构如下&#xff1a; .mate文件是unity生成的配置文件&#xff0c;不用管 制作第一张卡片 创建一个空物体&#xff0c;改名为Card。 在Card下挂载以下UI组件&#xff1a; 编写数据脚本并挂载&#xff0c;unity采用…

Nginx教程(4)—Keepalived

文章目录4.1 高可用集群架构Keepalived双机主备原理4.2 安装Keepalived4.3 Keepalived核心配置文件4.4 Keepalived实现双主机主备高可用测试4.5 高可用集群架构Keepalived双主热备原理Nginx教程一 Nginx教程二 Nginx教程三 4.1 高可用集群架构Keepalived双机主备原理 我们知道…

【计算机毕业设计】78.汽车租赁系统源码

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 目 录 摘 要 前 言 第1章 概述 1.1 研究背景 1.2 研究目的 1.3 研究内容 第二章 开发技术介绍 2.1 Java技术 2.2 Mysql数据库 2.3 B/S结构 2.4 SSM框架 第三章 系统分析 3.1 可行性分析 3.1.1 技术…

UnrealUBlueprintAsyncActionBase的使用

实现异步调用&#xff0c;之前我们介绍过一种FLatentActionInfo的方法&#xff0c;还有另外一种UBlueprintAsyncActionBase方法&#xff0c;可以实现异步节点&#xff0c;用于异步监听然后进行回调。按照如下步骤进行使用&#xff0c;我们同样以Delay一定帧数&#xff0c;并每帧…

面对新技术,必须找到与其发展相辅相成的长期主义的方法

从Meta股价的一路走低到扎克伯格发布的头显并不被用户买账&#xff0c;Facebook全力拥抱Meta正在经历一场过山车。   扎克伯格和他所带领下的Meta遭遇到的如此多的困境和难题&#xff0c;越来越多地让我们开始相信&#xff1a;所谓的元宇宙并非是一蹴而就的&#xff0c;它是一…

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

一、前言 对于k8s来说&#xff0c;搭建方式有多种&#xff0c;如果是生产环境&#xff0c;一般来说&#xff0c;至少需要3台节点确保服务的高可用性&#xff0c;常用的搭建方式列举如下&#xff08;提供参考&#xff09;&#xff1a; kubeadm搭建&#xff08;推荐&#xff09; …

postman测试环境的创建及发送请求方式

目录 一、创建工作环境 1、打开postman&#xff0c;点击工作区 2、点击新建 3、添加名字&#xff0c;点击创建 4、工作区可以自由切换工作区 5、点击创建发送请求 6、更换请求方式 7、保存测试 二、测试发送请求&#xff0c;使用的时候服务一定要启动 1、普通传参&…