马哥教育网络班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)
Net21_charlesNet21_charles
上一篇 2016-07-12
下一篇 2016-07-12

相关推荐

  • 磁盘管理

    1、拿到一块硬盘,通常来讲,第一步是分区,然后是文件系统的创建,管理文件系统,第三步是挂载设备。 2、linux(准确的说是UNIX)哲学,whindows一切皆窗口,一切皆图形。 3、磁盘是一个硬件设备,存放在/dev/目录下,会有相应的文件来对应的表示这些设备文件,在这个目录下存放的全是设备。 4、在/dev目录下和设备相关的有两种,一种是c开头为字符,…

    Linux干货 2017-04-22
  • 第八周

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;      在线的主机使用绿色显示;      不在线的主使用红色显示; #!/bin/bash # for i in 172.16.250.{…

    Linux干货 2017-05-23
  • 用户管理、组管理、权限管理、文本处理工具应用示例

    用户管理、组管理、权限管理、文本处理工具应用示例 1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限 [root@localhost ~]# cp -a /etc/skel/ /home/tuser1/ [root@localhost ~]# chmod -R go= /hom…

    Linux干货 2017-07-23
  • N25_第四周作业(补)

    1、复制/etc/skel目录到/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@EASTED tmp]# cp -r /etc/skel/ /home/tuser1/ [root@EASTED tmp]# cp …

    Linux干货 2017-01-02
  • 学习笔记(3)

    学习笔记

    Linux笔记 2018-04-01
  • 用户与权限管理

    用户与权限管理      昨天学完了用户与权限管理,讲解了用户的运行机制和权限的作用。 用户的产生来源于3A机制:    认证(Authentication):就是验证用户身份的。    授权(Authorization) :验证完身份后,…

    2017-07-27

评论列表(1条)

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

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