马哥教育网络班21期+第1周课程练习

LVS简介

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个由章文嵩博士开发的一款自由软件。利用LVS可以实现高可用的、可伸缩的Web、Mail、Cache等网络服务,并在此基础上开发支持庞大用户数的高可用商务应用。

LVS集群的组成

基于LVS构建的服务器集群系统由3个部分组成:最前端的负载均衡层,中间的服务器池层,以及后端的数据存储层。以下是LVS的架构框图:
  • 负载均衡层:由一台或多台负载均衡调度器组成。而LVS的核心模板IPVS就在调度器上,调度器的主要作用类似于路由器,通过预先设定的ipvs规则,将用户的请求分发到服务器池的Real Server上。

  • 服务器池层:由一组实际运行应用服务的机器组成,Real Server可以是Web服务器、FTP服务器、Mail服务器等中的一个或多个。

  • 数据存储层:为所有的Real Server提供共享存储空间和内容一致性的存储区域。一般可以通过NFS网络文件系统共享数据。

lvs_meitu_1.jpg

LVS集群实现原理

LVS的IP负载均衡技术是通过IPVS模块实现的。IPVS是LVS的核心软件,它的主要作用是:改变netfilter中INPUT链处理数据包的路径,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟IP去访问服务器。访问的请求首先通过此IP到达调度器,然后由调度器根据规则从服务器池中选择一个Real Server响应用户的请求。而此处Real Server如何返回数据给用户就是LVS实现的重点,可以分为常用的3种方式:NAT、TUN和DR。下面进行详细的介绍。
  • NAT:确切地来说是DNAT,通过请求的目标网络地址转换实现LVS。当用户请求调度器时,调度器将请求报文的目标地址(VIP)改写为根据调度算法挑选出的Real Server地址,同时也可以将报文的目标端口映射为Real Server的相应端口,最后将报文请求发送给选定的Real Server。Real Server在将数据返回给用户时,需要再次经过调度器将报文的源IP和源端口改为VIP和相应端口,然后将数据发送给用户,完成整个负载均衡调度过程。

    NAT.PNG

  • DR:即Director Routing,也就是用直接路由技术实现LVS。调度器收到请求报文后通过改写请求报文中的源目MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给用户,不再经过调度器。那么在这一过程中有一个点需要重点把握,那就是Real Server和调度器都使用了VIP,如何能保证请求报文会先发给Real Server,那么核心思想是不要让Real Server对广播的ARP请求做出响应,最有效的方法是修改Real Server主机的内核参数。

    DR1.PNG

  • TUN:即通过IP隧道技术实现LVS。也就是当调度器收到请求报文时不会去修改请求报文的三层头部,而是在原有的IP头部外再封装一个IP头部,新的IP头部的目标IP是根据调度算法挑选出来的Real Server的IP。

    TUN.PNG

LVS调度算法

前文一直在讲调度器根据算法选定服务器池中的Real Server,那么到底如何选择的,这里就浅析一下IPVS的调度算法,分为静态和动态两大类调度算法。

静态调度算法:

①RR:轮询(round robin):是一种1:1调度,实现将外部用户的请求按顺序1:1地分配到每一个Real Server上,不考虑Real Server的负载状况。

②WRR:加权轮询(weighted round robin):能者多劳的机制,根据Real Server的不同负载能力去调度访问请求。通过预先在每台Real Server上设定权重值来区别它们的处理能力。

③DH:目标地址散列(Destination Hash ):根据请求的目标IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,即将来自同一个IP的请求始终调度至同一个RS,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

④SH:源地址散列(Source Hash):源地址散列”调度算法根据请求的源IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,即将对同一个目标IP的请求始终调度至同一个RS,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

动态调度算法:

①LC:最少连接(Least Connections):动态地将用户请求调度到当前活动连接数最少的Real Server上。

②WLC:加权最少连接(Weighted LC):对每个服务节点用相应的权值表示其处理能力。WLC在进行调度时尽可能使Real Server的活动连接数与权重成正比。

③SED:最短期望延迟(Shortest Expection Delay): 对WLC的改进,Overhead = (ACTIVE+1)*256/权重值,防止在最初始状态时,调度器会将请求转发给负载能力差的Real Server。

④NQ:最少队列调度(Never Queue):对SED的改进,防止服务器资源的浪费,因为SED算法可能会导致权重过大的Real Server一直在处理请求,而权重小的一直空闲。

⑤LBLC:基于局部性的最少连接(Locality-Based LC):目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器。

⑥LBLCR:带复制的基于局部性最少连接(LBLC with Replication):对LBLC的改进,防止调度器一直转发请求给同一个缓存服务器,而使其他服务器处于空闲,而LBLCR实现的就是缓存服务器可向其他缓存服务器请求的功能,即复制他们的数据,这比从远端数据库请求数据高效很多,也使服务器资源充分利用。

原创文章,作者:Net21_charles,如若转载,请注明出处:http://www.178linux.com/23872

(0)
上一篇 2016-07-12 11:20
下一篇 2016-07-12 11:20

相关推荐

  • N26-第二周博客作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相 关示例演示。 文件管理类命令:mkdir rmdir cp rm mv ①mkdir命令:创建目录 格式:mkdir [OPTION]… DIRECTORY… option -m, –mode=MODE -p, –paren…

    Linux干货 2017-02-02
  • 浅谈linux基础知识(二)

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 文件管理工具:cp,mv,rm cp命令:copy 源文件,目标文件 单源复制:cp[OPTION]… [-T] SOURCE DEST 多源复制: cp[OPTION]… SOURCE… DIRECTORY cp[OPT…

    Linux干货 2016-10-12
  • vim文本编辑器及文本处理常用命令

    Vim是从 vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

    2018-04-08
  • centos7 root密码忘记怎么修改

           对于事务繁忙或者容易忘东忘西的朋友说,想要记着一些事情总感觉比登天还要难,特别是像密码之类的。可能要记忆的密码太多,总是不经意间就把密码忘记或者把密码混淆。总之这种站的比例还是有点分量的,例如我刚刚接触Linux时 ,第一把centos7装到电脑上没有多久,就把root密码忘记了,费了好时间,也请教了很多…

    Linux干货 2017-04-03
  • linux系统及简单使用

    简介:CentOS(Community Enterprise Operating System)社区企业操作系统,安全和稳定性较好,有优秀的社区支持。   Linux系统的原则: 1、由单一目的的较小的程序程序组成 2、一切皆文件 3、避免捕获用户接口 4、配置文件保存在文本中 5、链接程序完成复杂的功能   Linux系统安装: 英文安…

    Linux干货 2017-07-15
  • 管中窥豹—linux命令

    命令行选项风格: 1、原始unix风格     a、命令行选项以连字符'-'开头,后跟单个字符表示选项,选项后面跟着取值,如:mysql -hlocalhost      b、选项不带取值的,可以组合在一起,如:sed -n -r 可以写成 sed -nr  …

    Linux干货 2016-10-30

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-12 13:29

    写的很好,排版也很棒,图画的也很棒,加油