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负载均衡技术的更多相关文章

  1. 转载-lvs官方文档-LVS集群中的IP负载均衡技术

    章文嵩(wensong@linux-vs.org) 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN ...

  2. LVS集群中实现的三种IP负载均衡技术

    LVS有三种IP负载均衡技术:VS/NAT,VS/DR,VS/TUN. VS/NAT的体系结构如图所示.在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的.这些服务器 提供相同的网络服 ...

  3. LVS集群中的IP负载均衡技术

    LVS集群中的IP负载均衡技术 章文嵩 (wensong@linux-vs.org) 转自LVS官方参考资料 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集 ...

  4. IP负载均衡技术

    参考链接:http://www.360doc.com/content/12/1117/19/820209_248442094.shtml

  5. LVS+keepalived负载均衡

    背景:         随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司如何有效节约成本,节省不必要的浪费?同时实现商业硬件一样的高 ...

  6. IP负载均衡

    推荐一篇关于LVS的好文: https://www.cnblogs.com/gaoxu387/p/7941381.html 一.原博主要内容: 1.概述 IP负载均衡:四层负载,是基于IP+端口的负载 ...

  7. 亿级PV请求的三种负载均衡技术

    在互联网+不断渗透到生活中的今天,各种各样的网络服务存在在我们身边,他们的访问流量也是大得惊人.一个大型网站(百万PV以上)想要正常访问,单单靠一台服务器是不可能提供稳定服务的.这时候就需要用负载均衡 ...

  8. 160526、高并发之LVS搭建负载均衡

    LVS介绍: LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器.它是我们国家的章文嵩博士的一个开源项目.在linux内核2.6中,它已经成为内核的一部分,在此之前的内 ...

  9. 基于LVS的负载均衡实现

    一 什么是负载均衡 负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器.FTP服务器.企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务 ...

随机推荐

  1. Bresenham画线算法

    [Bresenham画线算法] Bresenham是一种光栅化算法.不仅可以用于画线,也可以用用画圆及其它曲线. 通过lower与upper的差,可以知道哪一个点更接近线段: 参考:<计算机图形 ...

  2. java中的==、equals()、hashCode()

    java中的==.equals().hashCode()源码分析 在java编程或者面试中经常会遇到 == .equals()的比较.自己看了看源码,结合实际的编程总结一下. 1. ==  java中 ...

  3. cdoj914-方老师分身 I 【dijkstra】

    http://acm.uestc.edu.cn/#/problem/show/914 方老师分身 I Time Limit: 3000/1000MS (Java/Others)     Memory ...

  4. Codeforces 703E DP + 因数分解 +离散化

    题意:给你n个数,和一个数m, 问最小需要多少个数,可以让这些数乘起来是m的倍数.如果有多组,取和最小的那一组. 思路:因为m的范围到1e12,并且和取模相关,所以容易想到处理出m的约数,然后离散化一 ...

  5. 虚拟机安装centos发现inet为127.0.0.1,导致Xshell连接不上

    问题如标题所示: 设置网卡开机自动启动: 实质linux是看一个网卡文件的配置,就是/etc/sysconfig/network-scripts/ifcfg-eth0 (这个文件名看你网卡名称而异,具 ...

  6. 79. Word Search在字母矩阵中查找单词

    [抄题]: Given a 2D board and a word, find if the word exists in the grid. The word can be constructed ...

  7. centos 6.5 部署openvpn 2.4

    软件下载地址 软件下载地址 https://openvpn.net/index.php/open-source/downloads.html 服务端 源Tarball(gzip) https://sw ...

  8. spring4-2-bean配置-1-依赖注入

    配置 bean,本章节中主要介绍蓝色文字部分. 配置形式:基于 XML 文件的方式:基于注解的方式 Bean 的配置方式:通过全类名(反射).通过工厂方法(静态工厂方法 & 实例工厂方法).F ...

  9. Linux下Maven的安装与使用

    pache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供.基于项目对象模型(POM)概念,Maven利 用一个中央信息片断能管理一个项目的构建.报 ...

  10. [Jenkins] 全局变量

    http://www.360doc.com/content/14/1110/10/7811581_423993429.shtml https://wiki.jenkins.io/display/JEN ...