Lvs IP负载均衡技术
Lvs集群的通用结构
Lvs集群采用IP负载均衡技术,属于IP层的交换(L4),具有很好的吞吐率。调度器分析客户端到服务器的IP报头信息,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器,Lvs集群系统的通用结构如下所示,主要包含四大部分:
负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务来自一个IP地址上的。当客户请求到达时,调度器只根据负载情况从服务器池选出一个服务器,将请求转发到选出的服务器。因为所有的操作都是在操作系统核心空间中完成,它的调度开销很小,所以具有很小的吞吐率。
服务器池(server pool),是一组真正执行客户请求的服务器,执行的任务有WEB、MAIL、FTP和DNS等。服务器池的节点数目是可变的,当整个系统收到的负载超过目前所有站点的处理能力时,可以在服务器池中添加服务器来满足不断增长的请求负载。对大多数网站来说,节点与节点之间不存在很强的相关性,所以整个系统的性能可以随着服务器池的节点数目增加而线性增长。
后端存储(backend storage),它为服务器池提供一个共享的存储区,这样使得服务器池拥有相同的内容,提供相同的服务。
Graphic Monitor是为系统管理员提供整个集群系统的监视器,它可以监视系统中每个节点的状况。
IP负载均衡技术
在已有的IP负载均衡技术中有三种:
一、是通过网络地址转换实现虚拟服务器的VS/NAT技术(Virtual Server via Network Address Translation)
二、是通过直接路由的VS/DR技术(Virtual Server via Direct Routing)
三、是通过IP隧道实现虚拟服务器的VS/TUN技术
通过NAT实现虚拟服务器(VS/NAT),请求,响应都在负载均衡器中完成
VS/NAT的体系结构如下图所示,在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的。这些服务提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执行结果是一样的
1、客户端浏览器输入58.251.62.141向58.251.62.141发出http请求
2、Load Balancer的外网(eth0)收到该次请求
3、IPVS调度器根据各个Real Server的负载情况,动态选择一台Real Server(例如:172.16.81.144),将请求报文的目标地址改写发送给172.16.81.144
4、Real Server收到请求报文并处理形成响应文本,由于Real Server上的网关地址为Load Balaceer,响应报文从Real Server发往Load Balaceer。
5、Load Balacer收到172.16.81.144的响应报文后,将响应报文的原地址修改为虚拟IP地址,并发送给客户端。
6、客户认为得到正常的服务,而不知道是哪一台服务器处理的。
通过直接路由实现虚拟服务器(VS/DR)
在VS/NAT的集群系统中,请求和响应的数据报文都需要通过负载调度器,当真实服务器数目在10-20之间时,负载调度器将成为整个集群系统的新瓶颈。大多数Internet服务都有这样的特点:请求报文较短而响应报文往往包含大量的数据。如果能将请求和响应分开处理,即在负载均衡器中只负责调度请求而响应直接返回给客户,将极大提升提高整个集群系统的吞吐量。VS/DR体系结构如下图所示:调度器和服务器都必须在物理上有一个网卡通过不分断的局域网连接,如通过交换机或者高速的HUB连接。VIP地址为调度器和服务器组共享,调度器设置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面不可见,只是用于处理目标地址为VIP请求。
总结:负载只负责调度,响应直接返回给用户,负载和服务器必须在物理上通过网卡通过不分断的局域网连接,负载地址对外可见,服务器池地址对外不可见。
1、客户端浏览器输入58.251.62.141向58.251.62.141发出http请求
2、Load Balacer的外网(eth0)收到该次请求
3、IPVS调度器根据各个Real Server的负载情况,动态的选择一台Real Server,将请求报文转发到Real Server(如下的地址)
4、Real Server的内网(eth1)接收到Load Balacer发过来的IP报文并对IP报文解包,得到客户的请求包,发现包的目标地址被配置在本地的lo设备上,所以就处理这个请求
5、Real Server根据路由表将响应报文通过外网(eth0)直接返回给用户,请求报文的目标地址改为VIP,响应报文的源地址也为VIP,所以响应报文不需要做任何修改,直接返回给客户
6、客户认为得到正常服务,而不知道是哪一台服务器处理的。
在VS/DR响应报文根据服务器的路由表直接返回给用户,而不经过负载调度器,所以负载调度器只处于从客户到服务器的半连接中,我们给出半连接的TCP有限状态机。如下图为VS/DR的TCP状态转移,圈表示状态,箭头表示状态间的转换,箭头上的标识表示在当前状态上收到该标识的输入,迁移到下一个状态。VS/DR的TCP状态迁移是按照半连接的TCP有限状态机进行的。
通过IP隧道实现虚拟服务器(VS/TUN)
跟VS/DR方法相同,VS/TUN多数Internet服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将相应发送给客户,可以极大地提高整个集群系统的吞吐量。IP隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。
利用IP隧道技术将请求报文封装转发给后端服务器,响应报文能从后端服务器直接返回给用户。但在这里,后端服务器有一组而非一个,所以不可能静态地建立一一对应的隧道。这样,我们可以利用IP隧道的原理将一组服务器上的网络服务组成在一个IP地址上的虚拟网络服务。
1、客户端浏览器输入58.251.62.141向58.251.62.141发出http请求
2、Load Balacer的外网(eth0)收到请求
3、IPVS动态选择一台服务器,将请求报文封装在另一个IP报文中
4、Load Balacer的内网(eth1)将封装后的IP报文发送给Real Server
5、Real Server的内网(eth1)收到Load Balacer发过来的IP报文并对IP报文解包,得到客户端请求,发现包的目标地址被配置在本地的IP隧道设备上,所以就处理这个请求。
6、Real Server根据路由表将响应报文通过外网(eth0)直接返回给客户,请求报文的目标地址为VIP,响应报文的原地址也为VIP,所以报文不需要修改直接发送给客户。
7、客户得到正常的服务,而不知道是哪一台服务器处理的。
VS/DR负载调度器也只处于从客户到服务器的半连接中,按照半连接的TCP有限状态机进行状态迁移。
- VS/NAT 的优点是服务器可以运行任何支持 TCP/IP 的操作系统,它只需要一个 IP 地址配置在调度器上,服务器组可以用私有的 IP 地址。缺点是它的伸缩能力有限,当服务器结点数目升到 20 时,调度器本身有可能成为系统的新瓶颈,因为在 VS/NAT 中请求和响应报文都需要通过负载调度器。
- VS/DR 优点是负载调度器可以处理大量的请求, 因为调度器只处理客户到服务器端的连接,响应数据可以直接从独立的网络路由返回给客户, 这可以极大地提高 LVS 集群系统的伸缩性。 缺点是要求负载调度器与实际服务器都有一块网卡连在同一物理网段上,服务器网络设备(或者设备别名)不作 ARP 响应,或者能将报文重定向(Redirect)到本地的 Socket 端口上。
- VS/TUN 的优点是负载调度器可以处理大量的请求,它甚至可以调度百台以上的服务器(同等规模的服务器),而它不会成为系统的瓶颈,因为负载调度器只将请求调度到不同的后端服务器,后端服务器将应答的数据直接返回给用户。缺点是 VS/TUN 技术有 IP 隧道的开销并且对服务器有要求,即所有的服务器必须支持“IP Tunneling”或者“IP Encapsulation”协议。
- FULLNAT模式(淘宝开源)
解决了上述三种的缺点,解决了真实服务器能跨越 VLAN 通讯,只需要连接到内网即可
入站时,目标 IP 更改为真实服务器的 IP,源 IP 更改为内网的本地 IP(一组内网 IP)
出站时,目标 IP 更改为客户端的 IP,源 IP 更换为 VIP
Lvs IP负载均衡技术的更多相关文章
- 转载-lvs官方文档-LVS集群中的IP负载均衡技术
章文嵩(wensong@linux-vs.org) 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN ...
- LVS集群中实现的三种IP负载均衡技术
LVS有三种IP负载均衡技术:VS/NAT,VS/DR,VS/TUN. VS/NAT的体系结构如图所示.在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的.这些服务器 提供相同的网络服 ...
- LVS集群中的IP负载均衡技术
LVS集群中的IP负载均衡技术 章文嵩 (wensong@linux-vs.org) 转自LVS官方参考资料 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集 ...
- IP负载均衡技术
参考链接:http://www.360doc.com/content/12/1117/19/820209_248442094.shtml
- LVS+keepalived负载均衡
背景: 随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司如何有效节约成本,节省不必要的浪费?同时实现商业硬件一样的高 ...
- IP负载均衡
推荐一篇关于LVS的好文: https://www.cnblogs.com/gaoxu387/p/7941381.html 一.原博主要内容: 1.概述 IP负载均衡:四层负载,是基于IP+端口的负载 ...
- 亿级PV请求的三种负载均衡技术
在互联网+不断渗透到生活中的今天,各种各样的网络服务存在在我们身边,他们的访问流量也是大得惊人.一个大型网站(百万PV以上)想要正常访问,单单靠一台服务器是不可能提供稳定服务的.这时候就需要用负载均衡 ...
- 160526、高并发之LVS搭建负载均衡
LVS介绍: LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器.它是我们国家的章文嵩博士的一个开源项目.在linux内核2.6中,它已经成为内核的一部分,在此之前的内 ...
- 基于LVS的负载均衡实现
一 什么是负载均衡 负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器.FTP服务器.企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务 ...
随机推荐
- 使用heap profiler进行内存占用分析
最近在项目中用到了google的heap profiler工具来分析内存占用,效果非常显著,因此在这里写一篇博客记录一下使用过程中遇到的一些问题. heap profiler依赖于tcmalloc,所 ...
- java动态规划导弹问题
这是一道动态规划题,和昨天的取硬币还有最长公共字串有点类似. 1.题目描述: 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一 ...
- 解剖Nginx·自动脚本篇(7)类型相关脚本系列
1 auto/types/sizeof 该脚本的功能,是通过测试程序获知给定的ngx_type的大小. 1.1 显示提示信息 echo $ngx_n "checking for $ngx_t ...
- Nginx源码完全注释(4)ngx_queue.h / ngx_queue.c
队列头文件ngx_queue.h #include <ngx_config.h> #include <ngx_core.h> #ifndef _NGX_QUEUE_H_INCL ...
- iOS中NSFileManager文件常用操作整合
//获取Document路径 + (NSString *)getDocumentPath { NSArray *filePaths = NSSearchPathForDirectoriesInDoma ...
- 更改IDEA高亮字体背景颜色
IDEA工具中依次进入file -> settings -> editor -> colors Scheme -> general,在右侧窗口中将result.i 都改成自己 ...
- 79. Word Search在字母矩阵中查找单词
[抄题]: Given a 2D board and a word, find if the word exists in the grid. The word can be constructed ...
- 78. Subsets 求所有子集(有重复就continue)
[抄题]: Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The ...
- Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密
Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密 二.利用加密算法DES实现java代码加密 传统的C/C++自动带有保护机制,但java不同,只要 ...
- mongo学习-稀疏索引
因为,如果要创建唯一索引,那么如果这个值有好几个为Null的,所以也会导致我们创建索引失败,那么我们可以引进系数索引这个概念,它可以做到,支持如果值存在的情况,它必须是唯一的,我们可以 将 uniqu ...