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%的速度增长.服务器上的工作负载正在迅速增加,因此服务器很容易在短时间内过载,尤其是对于流行的网站.为 ...
随机推荐
- Linux 访问iphone 上的照片
下面的链接,就差测试安装ifuse 了,估计是没有什么问题的. https://www.dedoimedo.com/computers/fedora-22-iphone.html
- JAVA并归排序(数组+链表)
并归排序与快速排序相似,靠分治思想突破了排序算法 O(n2) 的瓶颈. 我们看回顾一下几大排序算法的时间.空间复杂度: 排序算法 平均时间复杂度 最坏时间复杂度 空间复杂度 是否稳定 冒泡排序 O(n ...
- flask 搭建简单restful接口,moco基础
from flask import Flask, jsonify, abort, make_response app = Flask(__name__)app.config['JSON_AS_ASCI ...
- 11/2 下午 <String>
344. Reverse String 解法一(暴力法): 直接从两头往中间走,同时交换两边的字符即可 首位对调位置. class Solution { public void reverseStri ...
- 【转】TCP连接突然断开的处理方法
TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程. TCP断开连接的过程:TCP四次挥手. TCP/IP 协议簇分层结构 数据链路层主要负责处理传输媒介等众多的物理 ...
- [LeetCode] 490. The Maze 迷宫
There is a ball in a maze with empty spaces and walls. The ball can go through empty spaces by rolli ...
- [LeetCode] 286. Walls and Gates 墙和门
You are given a m x n 2D grid initialized with these three possible values. -1 - A wall or an obstac ...
- 黑客最喜欢的15个Nmap扫描命令,熟练掌握你也能成为黑客大神
1.针对IP或主机的基本Nmap扫描 nmap IP 现在,如果要扫描主机名,只需替换主机的IP,如下所示: nmap 域名 2.扫描本地或远程服务器上的特定端口或扫描整个端口范围 nmap -p 1 ...
- idea创建maven多模块Spring Boot项目
1, 创建父项目 1.1,file - new - project 1.2,选择maven,Create from archetype(有的说不选,有的没说,不过我建父项目的时候没有勾选) 1.3,根 ...
- Windows 有没有办法查看文件被哪个进程占用
经常当我们删除文件时,有时会提示[操作无法完成,因为文件已在另一个程序中打开,请关闭该文件并重试],到底是哪些程序呢? 有时候一个一个找真不是办法,已经被这个问题折磨很久了,今天下决心要把它解决,找到 ...