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

相关推荐

  • fstab配置文件、swap分区,文件关联

    fstab配置文件、swap分区,文件关联,lvm 挂载点和/etc/fstab  配置文件系统体系  被mount、 fsck和其它程序使用  系统重启时保留文件系统体系  可以在设备栏使用文件系统卷标  使用mount -a 命令挂载/etc/fstab中的所有文件…

    Linux干货 2016-09-01
  • 马哥教育网络班21期+第二周课程练习

    马哥教育网络班21期+第2周课程练习 [TOC] 1. 文件管理类命令介绍 Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 常用的文件管理类命令:cp,mv,rm a. cp – copy files and directories NAME       &nb…

    2016-07-16
  • 程序包管理之yum:yum源\库配置以及源码编译安装

    程序包管理之yum yum概念 什么是yum 由yellow dog这一发行版的开发者Terra Soft研发。 使用rpm命令安装软件包时,解决不了依赖关系,就会很麻烦,使用yum可以自行解决依赖关系。 删除某个安装包,如果是用rpm删除,就卸载掉某个依赖关系从而导致其他软件包不能使用。 yum特点 可同时配置多个软件仓库 简洁的配置文件/etc/yum.…

    Linux干货 2016-11-22
  • 第一周博客(1)

    计算机的组成及其功能。

    Linux笔记 2018-05-12
  • 马哥教育网络21期+第3周博客练习

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

    2016-07-26
  • Linux发展史

    日期:2016-10-12  Bell,MIT与GE的『Multics』系统     早期的计算机还很不普遍,除非是军事或者高科技用途,或者学术单位的学术研究,否则真的很难接触到。而且计算机架构很难使用。那个时候,程序设计者必须先将程序相关的信息在读卡纸上面打洞然后将读卡纸插入卡片阅读机来将信息读入主机中运算…

    Linux干货 2016-10-14

评论列表(1条)

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

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