马哥教育网络班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

相关推荐

  • linux入门基础命令总结

    命令基础

    2017-09-18
  • 实验:配额、RAID、LVM

    实验:在centos7实现光盘yum源 1yum install autofs 2现在启动systemctl start autofs 3开机启动systemctl enable autofs 4 cat /etc/yum.repos.d/base.repo[centos7]name=centos7 repobaseurl=file:///misc/cdgp…

    Linux干货 2017-04-25
  • 马哥教育网络第21期-第三周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -d: -f1 | uniq 2、取出最后登录到当前系统的用户的相关信息。 [root@localhost /]#&n…

    2016-07-29
  • 分区管理

    分区管理     一.磁盘分类 机械硬盘(HDD):该硬盘是传统的普通硬盘。主要有:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成  固态硬盘(SSD):用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元组成。 二.特点 1.     &n…

    Linux干货 2017-08-20
  • Ansible Playbook Roles 和 Include 声明-手稿

    Edit Ansible Playbook Roles 和 Include 声明 Ansible Playbook Roles 和 Include 声明 1. Introduction 2. Task Include Files And Encouraging Reuse 3. Roles 4. Role Default Variables 5. Role …

    Linux干货 2016-03-28
  • 第十二周课堂练习下

    6、在LAMP架构中,请分别以php编译成httpd模块形式和php以fpm工作为独立守护进程的方式来支持httpd,列出详细的过程 1.模块方式安装可见第三节 2.fpm独立守护进程安装 [root@LAMP setup]# tar -xf  php-5.6.23.tar.bz2  ##编译&nb…

    Linux干货 2017-01-03

评论列表(1条)

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

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