马哥教育网络班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 11:20
下一篇 2016-07-12 11:20

相关推荐

  • 第二周博客作业

    1.linux上的文件管理类命令都用哪些,其常用的使用方法及其相关示例演示。 常用命令有:cp, mv, rm 复制命令:cp cp [OPTION]… [-T] SOURCE DEST                 cp [OPTION]… SOURC…

    Linux干货 2016-06-23
  • Linux网络属性配置,计算机基础

    Linux网络属性配置,计算机基础 Linux网络属性配置(1): 计算机网络通信:TCP/IP 通过流式化数据相互通信,通过双方一致的时钟频率来完成信号传输; 有两种方式传输:同步传输,异步传输; 借助于介质传输:同轴电缆、网线、无线等; 要想相互通信,也要必须遵循一种(复杂)组织机制,就产生了协议; 通过把协议分层,来分别解决传输过程中各种复杂的操作; …

    Linux干货 2016-09-05
  • N23_第六周

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;:%s/^[[:blank:]]\+.*/\0#/g 2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;:%s/^[[:space:]]\+/…

    Linux干货 2017-02-28
  • cobbler实现centos7和centos6的无人值守安装

    环境:系统: CentOS 7.2  ip: 172.16.0.11 一. Cobbler安装准备 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。 Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),…

    Linux干货 2017-06-04
  • 深入了解磁盘结构

    一、     linux中常见的磁盘:   无论什么操作系统,归根还是要落实与磁盘上的,对于磁盘的管理也是linux管理必备的一项技能。在linux中“一切皆文件”的思想贯彻整个linux的学习中,包括像是磁盘等的硬件也是在linux的/dev/目录下类似于文件形式的存放,常见的SATA口USB优盘或是SCS…

    Linux干货 2016-08-29
  • rsyslog配置详解,结合mysql+loganalyzer展现

        环境:Centos7.2 前言:系统日日夜夜不停地运行着,有这么一个守护进程,兢兢业业地不断记录它运行产生的日志,有不起眼的闲言碎语,值得管理员撇一眼的系统报错,也默默地接收来自进程的严厉警告,甚至在内核崩溃前夕,同样不遗余力记录着当时发生的情形。他是无言的记录者,没有特别的修辞,但他的记录的文字却掷地有声。本…

    系统运维 2016-10-25

评论列表(1条)

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

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