2.2.2 LVS负载均衡软件

目录

2.2.2.1 LVS基础概念解析

1、LVS简介

    1.1、LVS是什么

    1.2、LVS能干什么

2、Linux Virtual Server项目

    2.1、Load Balancer(负载调度器)

    2.2、Linux Virtual Server项目的目标

    2.3、LVS项目已提供了一个实现可伸缩网络服务的Linux Virtual Server框架

    2.4、可以利用LVS框架实现

3、网络分层

    3.1、网络 7 层

    3.2、网络 5 层

    3.3、网络 4 层

4、IP虚拟服务器---IPVS

    4.1、Virtual Server via Direct Routing(VS/DR)

    4.2、Virtual Server via Network Address Translation(VS/NAT)

     4.3、Virtual Server via IP Tunneling(VS/TUN)

 5、IPVS调度算法

    5.1、轮叫

    5.2、加权轮叫

    5.3、最少链接

    5.4、加权最少链接

    5.5、基于局部性的最少链接

    5.6、带复制的基于局部性最少链接

    5.7、目标地址散列

    5.8、源地址散列

6、内核Layer-7交换机KTCPVS

7、LVS集群特点

8、LVS与Nginx对比

2.2.2.2 基于VIP的keepalived高可用架构讲解

1、Keepalived简介

    1.1、Keepalived的作用

    1.2、Keepalived的特性

2、Keepalived工作原理

    2.1、Keepalived内部工作分为以下5个部分

    2.2、VRRP协议

    2.3、Keepalived主要有3个模块

3、Keepalived应用场景

    3.1、网络层场景

    3.2、传输层场景

    3.3、应用层场景

4、高可用集群

     4.1、HA---高可用

    4.2、高可用集群实现

5、高可用架构

    5.1、主从高可用架构

     5.2、双主高可用架构

6、Keepalived高可用集群的解决方案

2.2.2.3 搭建LVS负载均衡集群

1、负载均衡集群简介

2、LVS简介

    2.1、LVS集群的6个角色

3、LVS NAT模式

4、LVS IP Tunnel模式

5、LVS DR模式

6、LVS集群搭建


2.2.2.1 LVS基础概念解析

1、LVS简介

    1.1、LVS是什么

        LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器。它是我们国家的章文嵩博士的一个开源项目。
        在linux内核2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核

    1.2、LVS能干什么

        LVS主要用于多服务器的负载均衡。它工作在网络 ,可以实现高性能,高可用的服务器集群技术。
            它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。他易用,配置非常简单,
        且有多种负载均衡的方法。他稳定可靠,即使在集群的服务器中某台服务器无法正常工作,
        也不影响整体效果。另外可扩展性也非常好。

Nginx工作在 7 层网络模型下

2、Linux Virtual Server项目

    2.1、Load Balancer(负载调度器)

        负载调度器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,
        客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。
            由于我们的负载调度技术是在linux内核中实现的,
            我们称之为linux虚拟服务器(Linux Virtual Server)

    2.2、Linux Virtual Server项目的目标

        使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,
            它具有很好的可伸缩性(Scalability)、可靠性(Reliability)、可管理性(Manageability)

    2.3、LVS项目已提供了一个实现可伸缩网络服务的Linux Virtual Server框架

        IPVS:提供了含有三种IP负载均衡技术的IP虚拟服务器软件
        KTCPVS:基于内容请求分发的内核Layer-7交换机
        Cluster Management:集群管理软件


    2.4、可以利用LVS框架实现

        高可伸缩、高可用的Web、Cache、Mail和Media等网络服务
        可以开发支持庞大用户数、高可伸缩、高可用的电子商务应用

3、网络分层

    3.1、网络 7 层

        7层是指OSI七层协议模型:
            应用层(Application)、表示层(Presentation)、会话层(Session)、
            传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)
        Nginx工作在7层网络模型下

    3.2、网络 5 层

        5层只是OSI和TCP/IP的综合,是业界产生出来的非官方协议模型,但是很多具体的应用。
        实际应用还是TCP/IP的四层结构。
        为了方便可以把下两层称为网络接口层。
        五层体系结构包括:应用层、运输层、网络层、数据链路层、物理层

    3.3、网络 4 层

        4层是指TCP/IP四层模型,主要包括:应用层、运输层、网络层、网络接口层
        LVS工作在4层网络模型下

4、IP虚拟服务器---IPVS

IPVS:IP Virtual Server

    在调度器的实现技术中,IP负载均衡技术是效率最高的
    IPVS软件实现了三种IP负载均衡技术,它们的大致原理如下:

    4.1、Virtual Server via Direct Routing(VS/DR)

直接路由的虚拟服务器

            VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将相应直接返回给客户。
        同VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器域真实服务器都有一块网卡连在同一物理网段上。

    4.2、Virtual Server via Network Address Translation(VS/NAT)

网络地址转换的虚拟服务器

        通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;
        真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。 

     4.3、Virtual Server via IP Tunneling(VS/TUN)

IP隧道的虚拟服务器
        采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。
        为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,
        所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用VS/TUN技术后,
        集群系统的最大吞吐量可以提高10倍。

 5、IPVS调度算法

    针对不同的网络服务需求和服务器配置,IPVS调度器实现了如下八种负载调度算法:

    5.1、轮叫

            (Round Robin),就是轮询

    5.2、加权轮叫

            (Weighted Round Robin),硬件配置不一致,配置加权

    5.3、最少链接

            (Least Connections),现有链接数最少的(最闲的)

    5.4、加权最少链接

            (Weighted Least Connections),采用最少链接的策略,并配置加权

    5.5、基于局部性的最少链接

            (Locality-Based Least Connections),采用最少链接的策略,当请求IP为某些时,固定的转到某个地区链接最少的服务器
            常用于缓存系统:根据目标IP地址对应一个服务器

    5.6、带复制的基于局部性最少链接

            (Locality-Based Least Connections with Replication)
                与“基于局部性的最少链接”的区别:相同的目标IP的请求,对应到一组服务器

    5.7、目标地址散列

            (Destination Hashing),根据请求报文的目标IP地址,进行使用Hash的散列函数,静态的散列方式
            如果目标地址有IP,就将请求固定对应到一台服务器

    5.8、源地址散列

            (Source Hashing),根据源地址散列到一台服务器,静态的散列方式

6、内核Layer-7交换机KTCPVS

        由于用户空间TCP Gateway的开销太大,我们提出在操作系统的内核中实现Layer-7交换方法,
    来避免用户空间与核心空间的切换和内存复制的开销。在Linux操作系统的内核中,我们实现了Layer-7交换,
    称之为KTCPVS(Kernel TCP Virtual Server)---核心TCP虚拟服务器。
        虽然应用层交换处理复杂,它的伸缩性有限,但应用层交换带来了以下好处:
内核Layer-7交换机KTCPVS---优点

7、LVS集群特点

    7.1、功能

    1、有实现三种IP负载均衡技术和八种连接调度算法的IPVS软件。
    2、在IPVS内部实现上,采用了高效的Hash函数和垃圾回收机制,能正确处理所调度报文相关的ICMP消息
    3、虚拟服务的设置数目没有限制,每个虚拟服务有自己的服务器集
    4、它支持持久的虚拟服务(如HTTTP Cookie和HTTPS等需要该功能的支持),并提供详尽的统计数据,
        如连接的处理速率和报文的流量等。
    5、针对大规模拒绝服务(Deny of Service)攻击,实现了三种防卫策略。
    6、有基于内容请求分发的应用层交换软件KTCPVS,它也是在Linux内核中实现。
    7、有相关的集群管理软件对资源进行检测,能及时将故障屏蔽,实现系统的高可用性。
    8、主、从调度器能周期性地进行状态同步,从而实现更高的可用性 

    7.2、适用性
        后端服务器可运行任何支持TCP/IP的操作系统,包括Linux,各种Unix(如FreeBSD、Sun Solaris、HP Unix等),
        Mac/OS和Windows NT/2000等。负载调度器能够支持绝大多数的TCP和UDP协议。
    7.3、性能
        LVS服务器集群有伸缩性,可支持几百万个并发连接。配置100M网卡,集群系统的吞吐量可高达1Gbits/s;
                                                       如配置千兆网卡,则系统的最大吞吐量可接近10Gbits/s。
    7.4、可靠性
        LVS服务器集群软件已经在很多大型的、关键性的站点得到很好的应用,所以它的可靠性在真实应用得到很好的证实。
        有很多调度器运行一年多,未作一次重启动。
    7.5、软件许可证
        LVS集群软件是按GPL(GNU Public License)许可证发行的自由软件,这意味着你可以得到软件的源代码,
        有权对其进行修改,但必须保证你的修改也是以GPL方式发行。

8、LVS与Nginx对比

2.2.2.2 基于VIP的keepalived高可用架构讲解

1、Keepalived简介

    1.1、Keepalived的作用

            是检测服务器的状态。如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,
        并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后
        Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,
        需要人工做的只是修复故障的服务器。

    1.2、Keepalived的特性

        1、配置文件简单
            可通过简单配置实现高可用功能
        2、稳定性强
            keepalived是一个类似于layer3/4/7交换机机制的软件,具备我们平时说的第3层、第4层、第7层交换机的功能,
            常用于前端负载均衡器的高可用服务,当主服务器出现故障时,可快速进行切换,检测机制灵活,成功率高。

            第3层:是指通过ICMP协议跟业务服务器交互、检查

            第4层:通过TCP协议,对状态进行检查

            第7层:网络层协议(比如:http协议),这种业务层协议进行检查
        3、成本低廉
            开源软件,可直接下载配置使用,没有额外费用
        4、应用范围广
            因为keepalived可应用在多个层面,所以它几乎可以对所有应用做高可用,包括LVS、数据库、Http服务、
            nginx负载均衡等等
        5、支持多种类型
            支持主从模式、主主模式高可用,可根据业务场景灵活选择

2、Keepalived工作原理

    2.1、Keepalived内部工作分为以下5个部分

        1、WatchDog监控checkers和VRRP进程的状况
        2、Checkers负责真实服务器的健康检查healthchecking
        3、VRRP Stack负责负载均衡器之间的失败切换
        4、IPVS wrapper用来发送设定的规则到内核IPVS代码
        5、Netlink Reflector用来设定vrrp的vip地址等

    2.2、VRRP协议

    VRRP:Virtual Router Redundancy Protocol(虚拟路由冗余协议)

Keepalived是以VRRP协议为实现基础的

        1、VRRP根据优先级来确定虚拟路由器中每台路由器的角色(Master路由器或Backup路由器)。
        2、VRRP优先级的取值范围为0到255(数值越大表明优先级越高),可配置的范围是1到254。
        3、优先级0为系统保留,给路由器放弃Master位置时候使用255则是系统保留给IP地址拥有者使用
        4、优先级越高,则越有可能成为Master路由器。当两台优先级相同的路由器同时竞争Master时,比较接口IP地址大小,接口地址大者当选为master。

    2.3、Keepalived主要有3个模块

        1、core模块
            keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析
        2、check模块
            负责健康检查,包括常见的各种检查方式
        3、vrrp模块
            是来实现vrrp协议的

3、Keepalived应用场景

    在网络层、数据链路层,运行着4个重要的协议
        IP:互联网协议
        ICMP:互联网控制报文协议
        ARP:地址转换协议
        RARP:反向地址转换协议

    3.1、网络层场景

        Keepalived在网络层采用的最常见的工作方式是通过ICMP协议向服务器集群中的那个节点发送
        一个ICMP数据包(类似于ping实现的功能),如果某个节点没有返回响应数据包,那么认为此节点
        发生了故障,Keepalived将报告此节点失效,并从服务器集群中剔除故障节点。
        ICMP:Internet Control Message Protocol(Internet控制报文协议),工作在第3层

    3.2、传输层场景

        1、提供了2个主要的协议:传输控制协议TCP、用户数据协议UDP
        2、TCP可以提供可靠的数据传输服务、IP地址和端口代表TCP的一个连接端,要获得TCP服务,需要先建立连接。
        3、Keepalived在传输层就是利用TCP的端口连接和扫描技术来判断集群点是否正常。
        4、Keepalived一旦探测到服务端口没有响应数据,就认为服务端口发生异常,然后强制将此端口对应的节点
            从服务器集群组中移除。
        工作在第4层

    3.3、应用层场景

        可运行ftp、telnet、http、DNS等各种不同类型的高层协议。
        用户可以自定义Keepalived的工作方式
        工作在第7层

4、高可用集群

     4.1、HA---高可用

        HA:high available,高可用
        1、高可用性集群是通过系统的可靠性(reliability)和可维护性(maintainability)来度量的。
        2、通常用平均无故障时间(MTTF)来度量系统的可靠性
        3、用平均维修时间(MTTR)来度量系统的可维护性
        4、HA = MTTF / (MTTF + MTTR) * 100%
               平均无故障时间/总时间
               总时间=平均无故障时间 + 平均维修时间

    4.2、高可用集群实现

        高可用工作方式:
            1、主从方式(非对称方式)
            2、双机双工方式(互备互援)
            3、集群工作方式(多服务器互备方式)
        高可用的资源分类:
            1、网络高可用
            2、服务器高可用
            3、存储高可用
            4、服务高可用

        开源的高可用解决方案:
               keepalived:通过实现vrrp协议来实现地址漂移 

5、高可用架构

    5.1、主从高可用架构

        1、在系统中,有一个Master节点和一个Backup节点,其中Master节点对线上业务提供服务,
            Backup与Master节点之间保持心跳。
        2、当Master节点因宕机服务不可用时,系统会切换到Backup节点上,提供服务。
        3、当宕机Master节点恢复后,系统将该Master作为Backup加入集群。

Backup---备份

     5.2、双主高可用架构

        1、在系统中,有2个Master节点,均对线上业务提供服务,两个Master节点之间保持心跳。
        2、当某一台Master节点因宕机服务不可用时,系统会将流量全部导向剩余的Master节点,继续提供服务。
        3、当宕机Master节点恢复后,系统将该Master加入集群,提供服务。

6、Keepalived高可用集群的解决方案

    1、keepalived在一个节点上启动之后,会生成一个Master主进程,这个主进程又会生成两个子进程,分别是:
        1、VRRP Stack:实现VRRP协议
        2、Checkers:检测ipvs后端realserver的健康状况检测
    2、VRRP双方节点都启动以后,要实现状态转换的,刚开始启动的时候,初始状态都是Backup,而后向其它节点发送通告,
        以及自己的优先级信息,谁的优先级高,就转换为Master,否则就还是Backup。
    3、这时候服务就在状态为Master的节点上启动,为用户提供服务,如果,该节点挂了,则转换为Backup,优先级降低,
        另一个节点转换为Master,优先级上升,服务就在此节点启动,VIP、VMAC都会被转移到这个节点上,为用户提供服务。 

2.2.2.3 搭建LVS负载均衡集群

1、负载均衡集群简介

    1、主流开源软件:LVS、keepalived、haproxy、nginx等
    2、LVS属于4层负载均衡,Nginx属于7层负载均衡,Haproxy既可以认为是4层,也可以做7层使用。
        4层:主要是TCP协议
        7层:主要是HTTP协议、Mail
    3、LVS:可以分发除80外的其他端口的通信,eg:MySQL
       Nginx:仅仅支持HTTP、HTTPS、Mail
       Haproxy:也支持MySQL
    4、相比较来说,LVS更稳定,能承受更多的请求,
        而Nginx更加灵活,能实现更多个性化的需求。

2、LVS简介

    1、LVS是由国人章文嵩开发
    2、LVS是基于TCP/IP做的路由和转发,稳定性和效率很高
    3、LVS是工作于Linux内核中的
    4、LVS有三种常见的模式:NAT、DR、IP Tunnel
    5、LVS架构中有一个核心角色叫做分发器(Load Balancer),它用来分发用户的请求

    2.1、LVS集群的6个角色

        DS:Director Server,指的是前端负载均衡器节点
        RS:Real Server,后端真实的工作服务器
        VIP:Virtual IP,向外部直接面向用户请求,作为用户请求的目标的IP地址
        DIP:Director Server IP,主要用于和内部主机通讯的IP地址
        RIP:Real Server IP,后端服务器的IP地址
        CIP:Client IP,访问客户端的IP地址

3、LVS NAT模式

    1、这种模式借助iptables的nat表来实现
    2、用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的RS上去
    3、RS需要设定网关为分发器的内网IP
    4、用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器成为瓶颈
    5、在nat模式中,只需要分发器有公网IP即可,所以比较节省公网IP资源

4、LVS IP Tunnel模式

    1、这种模式需要有一个公共的IP配置在分发器和所有的RS上,我们把它叫做VIP
    2、客户端请求的目标IP为VIP,分发器接收到请求数据包后,会对数据包做一个加工,会把目标IP改为RS的IP,这样数据包就到了RS上
    3、RS接收数据包后,会还原原始数据包,这样目标IP为VIP,因为所有RS上配置了这个VIP,所以它会认为是它自己
 

5、LVS DR模式

    1、这种模式,也需要有一个公共的IP配置在分发器和所有RS上,也就是VIP
    2、和IP Tunnel不同的是,它会把数据包的MAC地址修改为RS的MAC地址
    3、RS接收数据包后,会还原原始数据包,这样目标IP为VIP,因为所有RS上配置了这个VIP,所以它会认为是它自己

6、LVS集群搭建

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值