LVS (Linux虚拟服务器)模型及算法
LVS(Linux Virtual Server)Linux虚拟服务器
LVS集群采用IP负载均衡技术和基于内容请求分发技术。
用户请求发给负载均衡调度器,由负载均衡调度器根据设定的调度算法将请求发给真实服务器。对用户而言,集群是透明的。
LVS集群采用三层结构,其主要组成部分为:
1、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
2、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。
3、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
模型
1. Virtual Server via Network Address Translation(VS/NAT)
将用户请求报文的目的地址改写为由调度器根据调度算法计算得出的服务器ip。服务器响应报文同理在调度器将网络地址转换。缺点是所有报文都需要经过调度器,对调度器的压力较大。

2. Virtual Server via IP Tunneling(VS/TUN)
将用户请求报文进行封装并添加新的ip头,目的地址为由调度器根据调度算法计算得出的服务器ip。服务器响应直接返回给客户端,无需经过调度器。解决了NAT对调度器的压力。

3. Virtual Server via Direct Routing(VS/DR)
将用户请求的mac地址改写为真实服务器mac地址,直接通过mac寻址将请求转发到真实服务器。服务器将响应直接发给客户端。这种模型需要调度器和服务器在同一局域网,且服务器需要配置lo ip为vip,并且设置non-arp模式。前者为了服务器能够收到处理这个请求,后者是为了避免arp请求mac出错。这个模式优于上面两种,个人认为DR模式只对mac进行处理,上面均需要对网络层数据进行一定操作,开销上mac应该较少。

4. fullnat
与nat对比,fullnat 对目的ip、源ip都进行了地址转换(dnat,snat)。缺点是改变了源ip,获取不到客户端的真实信息。
调度算法
1 轮叫(Round Robin)简称RR
均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
2 加权轮叫(Weighted Round Robin) 简称WRR
处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
3 最少链接(Least Connections)简称LC
调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。
4 加权最少链接(Weighted Least Connections)简称WLC
具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。最少链接的扩展,加上权值的最少链接。
5 基于局部性的最少链接(Locality-Based Least Connections)简称LBLC
主要用于Cache集群系统。该算法找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用"最少链接"的原则选出一个可用的服务器,将请求发送到该服务器。
6 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)简称LBLCR
它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按"最小连接"原则从服务器组中选出一台服务器。
7 目标地址散列调度(Destination Hashing)简称DH
一种静态映射算法,通过一个散列(Hash)函数将一个目标IP地址映射到一台服务器。
8 源地址散列调度(Source Hashing)简称SH
算法正好与目标地址散列调度算法相反,它根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器。
9 最短的期望的延迟(shortest expected delay scheduling)简称sed
基于wlc算法
10 最少队列调度(never queue scheduling)简称nq
无需列队,如果有台realserver的连接数=0 就直接分配,不需要进行sed运算。
小结
问题
- 需要多次连接,缓存,数据保存在不同服务器上。
- TUN模式需要设置lo IP?怎么实现拆包后被自己处理而不是丢弃。
NAT 调度器如何知道服务器返回报文要发给哪个具体客户端。当请求数大于服务器数,如何判断。 (nat网络地址转换只将目标IP和端口修改为真实服务器IP端口,对源没有修改。)
- nat模型,是否可以直接在真实服务器中将响应报文修改为VIP?(直接使用隧道模型即可。若在服务器修改,增加服务器开销,只需使用隧道模型即可)
- 如何保证真实服务器可用
- 如何确定真实服务器的负载
- DR模式跨地区如何扩展(DNS + DR)
- ds对应多个网段
RS健康检测
keepalived
其他
QPS比Nginx提升60%,阿里Tengine负载均衡算法揭秘
参考链接
LB 简单比较 – F5、NetScaler、LVS、Nginx、Haproxy
https://www.cnblogs.com/gaoxu387/p/7941381.html
https://blog.csdn.net/libaineu2004/article/details/79062529
https://blog.csdn.net/sr_1114/article/details/80256626
https://blog.csdn.net/weixin_40470303/article/details/80541639
https://www.cnblogs.com/pigdragon/p/6564442.html
https://blog.csdn.net/weixin_33704234/article/details/86332145
https://www.xuebuyuan.com/3214658.html
https://www.cnblogs.com/Csir/p/6754077.html
https://blog.csdn.net/qq_41772936/article/details/80146464
https://www.cnblogs.com/yaboya/p/9109745.html
PPT




























LVS (Linux虚拟服务器)模型及算法的更多相关文章
- LVS (Linux虚拟服务器)-不同的负载均衡方法
随着Internet用户的增长,基于Web的公司处理的通信量急剧增加.有各种解决方案来应对这种不断增长的流量. 一种解决方案是垂直扩展服务器(即:简单地向服务器添加更多的CPU和内存资源.)当然在一定 ...
- Linux虚拟服务器--LVS
LVS 百科名片 LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立,可以实现LINUX平台下的简单负载均衡.LVS是Linux Virtual Server的缩写,意思是L ...
- Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台 Seesaw
负载均衡系统 Seesaw Seesaw是由我们网络可靠性工程师用 Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台,就像所有好的项目一样,这个项目也是为了解决实际问题而产生的. Seesa ...
- 大数据 - hadoop三台linux虚拟服务器 - 初始化部署
搭建hadoop环境 1.解压Hadoop的安装包,解压到modules文件夹中.(安装包下载地址:http://archive.apache.org/dist/hadoop/core/hadoop- ...
- 搭建Linux虚拟服务器
1.搭建Linux虚拟机环境安装VMware Workstation 14下载地址:https://www.cr173.com/soft/68480.html密钥:FF31K-AHZD1-H8ETZ- ...
- LVS (Linux Virtual Server) 负载均衡
[大型网站技术实践]初级篇:借助LVS+Keepalived实现负载均衡 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服 ...
- LVS : Linux Virtual Server 负载均衡,集群,高并发,robust
1 LVS : Linux Virtual Server http://www.linuxvirtualserver.org/ http://www.linuxvirtualserver.org/zh ...
- LVS(Linux Virtual Server)
LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器.它是我国的章文嵩博士的一个开源项目.在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需 ...
- [Linux] LVS虚拟服务器四层负载均衡
随着互联网的爆炸性增长及其在我们生活中日益重要的作用,互联网上的流量急剧增加,并且每年以超过100%的速度增长.服务器上的工作负载正在迅速增加,因此服务器很容易在短时间内过载,尤其是对于流行的网站.为 ...
随机推荐
- 两个开源的 Spring Boot + Vue 前后端分离项目
折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...
- <Dynamic Programming> 120 279
120. Triangle 从倒数第二行找,然后逐个遍历这个DP数组,对于每个数字,和它之后的元素比较选择较小的再加上面一行相邻位置的元素做为新的元素,然后一层一层的向上扫描 class Soluti ...
- 11/7 <Dynamic Programming>
62. Unique Paths 方法一: 二位数组 而这道题是每次可以向下走或者向右走,求到达最右下角的所有不同走法的个数.那么跟爬梯子问题一样,需要用动态规划 Dynamic Programmin ...
- ASP.NET开发实战——(四)ASP.NET MVC是如何运行的?它的生命周期是什么?
前面的文章我们使用ASP.NET MVC创建了个博客应用,那么它是如何工作的呢?我们都知道ASP.NET的程序需要部署到IIS上才能够通过浏览器来访问,那么IIS与ASP.NET MVC程序之间又是如 ...
- 洛谷 P3742 umi的函数
传送门 思路 \(loceaner\)已经蔡虚鲲到连红题都不会做了 因为有\(special\ judge\)所以我们就可以瞎搞了! 由题目可知,只要有一个\(y[i] > x[i]\)则一定没 ...
- 洛谷 P5021 [NOIP2018]赛道重建
洛谷 P5021 [NOIP2018]赛道重建 传送门 思路 思路就是常规的思路,所以就不说了--我就是来记录一下我的\(AC\)之路的,真的是太爽了 没错--我也是一个个打的部分分,最后终于AC的, ...
- BERT、ERNIE以及XLNet学习记录
主要是对 BERT: Pre-training of Deep Bidirectional Transformers for Language Understandingtichu提出的BERT 清华 ...
- [清华集训2017]小 Y 和地铁(神奇思路,搜索,剪枝,树状数组)
世界上最不缺的就是好题. 首先考虑暴搜.(还有什么题是从这东西推到正解的……) 首先单独一个换乘站明显没用,只用考虑一对对的换乘站. 那么有八种情况:(从题解偷图) 然后大力枚举每个换 ...
- 第01组 Beta冲刺(2/5)
队名:007 组长博客: https://www.cnblogs.com/Linrrui/p/11998909.html 作业博客: https://edu.cnblogs.com/campus/fz ...
- linux 成功安装oracle后,为其创建一个登录账户
成功安装oracle后,创建一个登录账户 1.切换到oracle用户下 su -l oracle 2.使用sysdba账户登录: sqlplus / as sysdba 3.创建用户 语法:CREAT ...