LVS产生背景、原理及LVS-DR应用实例(一)

一、什么是lvs 它产生的背景,使用场景是什么?

 

   LVS(Linux Virtual Server) 可以理解为一个虚拟服务器系统

      Internet的飞速发展,网络带宽的增长,Web服务中越来越多地使用CGI、动态主页等CPU密集型应用,这对服务器的性能有较高要求,单台服务器已经无法满足需要,所以集群自然的成为一种解决方案,而LVS便是其中的一种集群方案。

    集群(Cluster)是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。集群系统的主要优点:高可扩展性、高可用性、高性能、高性价比。

    常见集群类型及实现方式简介   
        LB:Load Balancing 高可拓展,伸缩集群
        HA:High Availability 高可用集群
        HP:High Performance 高性能集群
        LB:Load Balancing 

        硬件级:F5 BIG-IP、Citrix Netscaler、 A10 A10、Array、Redware
        软件级:lvs (传输层)、haproxy, nginx (应用层)
        HA:高可用,heartbeat 、corosync + pacemaker、 cman +             rgmanager、cman + pacemaker、keepalived
        HP:高性能
            hadoop
      LVS项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。通过LVS提供的负载均衡技术和Linux操作系统可实现一个高性能、高可用的服务器群集,从而以低成本实现最优的服务性能
 

    lvs能够实现在大并发的情况下,将前端调度器收到的请求分发给后端服务器处理,实现了负载均衡集群的作用。

      注:更多信息:LVS是国内贡献给开源组织的一个最优秀的项目之一,该项目创始人和主要开发人是章文嵩博士,目前就职于阿里巴巴,改项目及具体介绍请参见网站:http://www.linuxvirtualserver.org/zh/lvs1.html

 

 二、LVS的构成和内核

    LVS是作为一个前端(Director)存在的,又称为调度器,它本身不提供任何的服务,只是将通过互联网进来的请求接受后再转发给后台真正的服务器(RealServer)进行处理,然后响应给客户端。 

     LVS有两个重要的组件:一个是IPVS,一个是IPVSADM

         ipvsLVS的核心组件,它本身只是一个框架,类似于iptables,工作于内核空间中。

         ipvsadm 是用来定义LVS的转发规则的,工作于用户空间中

    内核客户端的请求流向参见以下示意图

     内核客户端的请求流向参见以下示意图.png

 

 

三、LVS调度算法

 
静态方法:仅根据调度算法本身进行调度    

   

    rr: round robin,轮流,轮询,轮叫

    wrr: weighted round robin, 加权轮询

    sh:source hashing,session绑定

    dh: destination hashing, 目标地址hash

 

动态方法:根据算法及各RS当前的负载状况进行调度

 

    lc: least connection,最少连接

    wlc: weighted lc,加权最少连接

    sed: shortest expection delay,最少期望延迟

    nq: never queue,永不排队

    lblc: Locality-Based Least Connection,基于局部性的最少连接 

    lblcr:Replicated lblc,基于局部性的带复制功能的最少连接

 

四:LVS 的安装、配置,使用命令详解

 

 LVS安装(ipvsadm)

 

#yum -y install ipvsadm   

      安装ipvsadm 

#echo 1 > /proc/sys/net/ipv4/ip_forward

      打开系统的转发功能,也即路由功能

#ipvsadm -A -t 181.163.10.8 :80  -s  rr

    添加一个集群服务,指定 vip,端口80,调度算法:rr 轮询

 

#ipvsadm -a -t 181.163.10.8:80   -r 181.163.10.9:80    -g

     添加一个节点到集群服务,指定指定节点IP,端口,模式为-g:DR 模式

 

#ipvsadm -a -t 181.163.1.10:80   -r 181.163.10.10:80    -g

     添加一个节点到集群服务,指定指定节点IP,端口,模式为-g:DR 模式 

 

    LVS  ipvsad    命令格式

 

         Ipvsadm     -A|E -t|u|f service-address [-s scheduler]

              [-p   [timeout]] [-M netmask]

      ipvsadm -D   -t|u|f service-address

      ipvsadm -C

      ipvsadm -R

      ipvsadm -S   [-n]

      ipvsadm   -a|e -t|u|f service-address -r server-address

              [-g|i|m] [-w weight] [-x upper] [-y lower]

      ipvsadm -d   -t|u|f service-address -r server-address

      ipvsadm   -L|l [options]

      ipvsadm -Z   [-t|u|f service-address]

      ipvsadm   –set tcp tcpfin udp

      ipvsadm   –start-daemon state [–mcast-interface interface]

                [–syncid syncid]

      ipvsadm   –stop-daemon state

      ipvsadm -h

 

    LVS  ipvsad  命令详解

 

      定义集群服务:

        -A 添加一个集群服务

        -D 删除一个集群服务

        -E 修改一个集群服务

        -t VIP:端口 定义集群服务的类型为TCP的某个端口

        -u VIP:端口 定义集群服务的类型为UDP的某个端口

        -f 防火墙标记 定义集群服务的类型为防火墙标记

        -s 调度算法 指定集群服务的调度算法

 

    定义集群节点:

        -a 添加一个节点到集群服务

    -d 从集群服务中删除一个节点

    -e 修改集群服务器中的节点

    -r 节点IP:端口  定义节点的IP及类型

    -m 定义为NAT模型

    -g 定义为DR模型

    -i 定义为TUN模型

    -w 权重 定义服务器的权重

 

    查看已经定义的集群服务及RS:

        ipvsadm -L -n

        -c: 查看各连接

        –stats: 统计数据

        –rate: 速率

        –exact: 精确值

 

    从集群服务中删除RS:

        ipvsadm -d -t|u|f service-address -r server-address

     删除集群服务:

        ipvsadm -D -t|u|f service-address

    清空所有的集群服务:

        ipvsadm -C

     保存集群服务定义:

        ipvsadm -S > /path/to/some_rule_file

        ipvsadm-save > /path/to/some_rule_file

      让规则文件中的规则生效:

        ipvsadm -R < /path/from/some_rule_file

        ipvsadm-restore < /path/from/some_rule_file

 

五、LVS四种工作模式与对比

        1、LVS-DR   
        LVS-DR模式,直接路由模式, 调度器与实际服务器都有一块网卡连在同一物理网段上
    lvs-DR模型是lvs的默认模型,也是企业中用到的最多的模型
解读:直接路由模型,每个Real Server上都有两个IP:VIP和RIP,但是VIP是隐藏的,就是不能提高解析等功能,只是用来做请求回复的源IP的,Director上只需要一个网卡,然后利用别名来配置两个IP:VIP和DIP ### Director在接受到外部主机的请求的时候转发给Real Server的时候并不更改目标地址,只是通过arp解析的MAC地址进行封装然后转给Real Server,Real Server在接受到信息以后拆除MAC帧封装,然后直接回复给CIP

   LVC-DR.png

 

        2、 LVS-TUN 

        LVS-TUN模式,ip隧道模式,可以运用于异地机房的负载调度上
解读:隧道模型,跟DR模型比较相似,都是由rs直接回复给cs .跟dr模型不同的是,vs和rs之间可以存在路由,原因是tun模型在报文源ip和目的ip后又加入了一层源ip和目的ip的信息。  LVC-TUN.png

 

        3、 LVS-NAT  

         LVS_NAT模型,通常应用与rs较少,rs节点无要求,端口转换的场景
    解读:地址转换模型,vs通过修改目的ip将报文发送到rs.rs通过dip网关将报文发给vs,vs再将报文的源ip进行修改发送给客户端。

       LVC-NAT.png

 

      4、LVS-FULLNAT

    全地址转换模型,主要应用与rs和vs不在同一网络的情景
    解读:vs接收到client发送的报文后,修改报文中的源ip和目的ip为dip和rip.rs将报文返回vs后vs再将报文中的源ip和目的ip改为vip和cip.LVC-FULLNAT.png    

 注:本文参考:N22-深圳-晓志, 章文嵩项目信息

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

(1)
AchengAcheng
上一篇 2016-10-28
下一篇 2016-10-29

相关推荐

  • varnish

    Web Page Cache: squid –> varnish程序的运行具有局部性特征:时间局部性:一个数据被访问过之后,可能很快会被再次访问空间局部性:一个数据被访问时,其周边的数据也有可能被访问到 cache:命中 热区:局部性;时效性:缓存空间耗尽:LRU过期:缓存清理 缓存命中率:hit/(hit+miss)(0,1)页面命中率:…

    Linux干货 2017-05-22
  • Linux发展史

    独白:    先来说说我对Linux的认识吧,用一个成语形容:狗屁不通,想了一下,文明社会还是和谐点比较好,算是闻所未闻吧。15年初从朋友那得知Linxu,冲着他那十几K的工资还是挺心动的,说实在很仰慕他,有点计算机基础,自学两个月出山,当时月薪8k;而我还是拿着3,4k的工资,也没什么本领,于是找他要了些有关视频资料,也开始了自学之路,…

    Linux干货 2017-04-08
  • nginx基本功能学习

    一、NGINX介绍: Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:            作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 …

    Linux干货 2015-12-19
  • 文本查找相关命令简单介绍

    文件查找命 在文件系统上查找符合条件的文件 非实时查找:基于索引查找 locate 实时查找:find locate介绍 依赖于事先构建的索引:索引的构建是在系统较为空闲时自动进行(周期性任务):手动更新数据库(updatedb) 索引构建过程需要遍历整个根文件系统,极消耗资源,生产中尽量避免手动更新。 语法: locate KEYWORD -i:忽略大小写…

    Linux干货 2017-04-10
  • LVS-nat-dr

    主程序:ipvsadm 配置文件: 规则保存工具:/usr/sbin/ipvsadm-save 规则重载工具:/usr/sbin/ipvsadm-restore 配置文件:/etc/sysconfig/ipvsadm-config ipvsadm使用: 增:      示例:ipvsadm -A -t 172.16.42.1:8…

    2017-08-08
  • 初识Linux之——Linux是如何诞生的

    初识Linux之——Linux是如何诞生的 对于大多数初次接触Linux的童鞋,可能会非常好奇什么是Linux?它是做什么的?为什么那么多高手都喜欢Linux?Linux是如何产生出来的呢?本文将为大家解答释疑,让大家对Linux有一个清晰的概念。 Linux是什么 简单来说,如Windows7、Windows10、安卓、IOS等,Linux是一个计算机操作…

    Linux干货 2016-10-14

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-02 16:11

    完成的非常好,给出了详细操作步骤,能把排版在完善一下就更完美了,加油!