LVS - 相关介绍、工作模式和调度算法的说明

一、简介
    LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器,LVS 已经是 Linux 内核标准的一部分。是一个虚拟的服务器集群系统,可以在unix/linux平台下实现负载均衡集群功能
    集群就是一组相互独立的计算机,通过高速的网络组成一个计算机系统,每个集群节点都是运行其自己进程的一个独立服务器。常用开源集群软件有lvs、keepalived、haproxy、nginx、heartbeat等;常用商业集群硬件有F5、Netscaler、Radware等

    
二、相关
    1、组成
        1). ipvs(Ip Virtual Server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码
        2). ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)

    2、原理
        1). 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
        2). PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
        3). IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链
        4). POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器
 
    3、术语
        D S:Director Server,指的是前端负载均衡器节点
        R S:Real Server,后端真实的工作服务器
        VIP:Virtual IP,向外部直接面向用户请求,作为用户请求的目标的IP地址
        DIP:Director Server IP,主要用于和内部主机通讯的IP地址
        RIP:Real Server IP,后端服务器的IP地址。
        CIP:Client IP,访问客户端的IP地址。

三、工作模式
    1.VS/NAT(网络地址转换)
        1). 原理
            (a). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP 
            (b). PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
            (c). INPUT链上的IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端真实服务器RIP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP 
            (d). POSTROUTING链通过选路,将数据包发送给Real Server
            (e). Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP 
            (f). Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP

        2). 特性
            (a). RS应该使用私有地址,RS的网关必须指向DIP
            (b). DIP和RIP必须在同一个网段内
            (c). 请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈
            (d). 支持端口映射
            (e). RS可以使用任意操作系统
            (f). 对Director Server压力会比较大,请求和响应都需经过director server

    2、VS/TUN(IP隧道模式)
        1). 原理
            (a). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
            (b). PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
            (c). IPVS比对数据包请求的服务是否为集群服务,若是,在请求报文的首部再次封装一层IP报文,封装源IP为为DIP,目标IP为RIP。然后发至POSTROUTING链。 此时源IP为DIP,目标IP为RIP 
            (d). POSTROUTING链根据最新封装的IP报文,将数据包发至RS(因为在外层封装多了一层IP首部,所以可以理解为此时通过隧道传输)。 此时源IP为DIP,目标IP为RIP
            (e). RS接收到报文后发现是自己的IP地址,就将报文接收下来,拆除掉最外层的IP后,会发现里面还有一层IP首部,而且目标是自己的lo接口VIP,那么此时RS开始处理此请求,处理完成之后,通过lo接口送给eth0网卡,然后向外传递。 此时的源IP地址为VIP,目标IP为CIP

        2). 特性
            (a). RIP、VIP、DIP全是公网地址
            (b). RS的网关不会也不可能指向DIP
            (c). 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
            (d). 不支持端口映射
            (e). RS的系统必须支持隧道

    3、VS/DR(直接路由
        1). 原理
            (a). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
            (b). PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
            (c). IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址 
            (d). 由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。
            (e). RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP 
            (f). 响应报文最终送达至客户端

        2). 特性
            (a). 保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS
            (b). RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问
            (c). RS跟Director Server必须在同一个物理网络中
            (d). 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
            (e). 不支持地址转换,也不支持端口映射
            (f). RS可以是大多数常见的操作系统
            (g). RS的网关绝不允许指向DIP(因为我们不允许他经过director)
            (h). RS上的lo接口配置VIP的IP地址
            (i). RS和DS必须在同一机房中
            (-). 特a解决方案:
                  在前端路由器做静态地址路由绑定,将对于VIP的地址仅路由到Director Server
                  在arp的层次上实现在ARP解析时做防火墙规则,过滤RS响应ARP请求。这是由iptables提供的
                  修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求
                  
四、调度算法
    1、轮叫调度 rr (Round Robin)
        这种算法是最简单的,就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是简单。轮询算法假设所有的服务器处理请求的能力都是一样的,调度器会将所有的请求平均分配给每个真实服务器,不管后端 RS 配置和处理能力,非常均衡地分发下去

    2、加权轮叫 wrr (Weighted Round Robin)
        这种算法比 rr 的算法多了一个权重的概念,可以给 RS 设置权重,权重越高,那么分发的请求数越多,权重的取值范围 0 – 100。主要是对rr算法的一种优化和补充, LVS 会考虑每台服务器的性能,并给每台服务器添加要给权值,如果服务器A的权值为1,服务器B的权值为2,则调度到服务器B的请求会是服务器A的2倍。权值越高的服务器,处理的请求越多

    3、最少链接 lc (Least Connections)
        这个算法会根据后端 RS 的连接数来决定把请求分发给谁,比如 RS1 连接数比 RS2 连接数少,那么请求就优先发给 RS1 

    4、加权最少链接 wlc (Weighted Least Connections)
        这个算法比 lc 多了一个权重的概念。

    5、基于局部性的最少连接调度算法 lblc (Locality-Based Least Connections)
        这个算法是请求数据包的目标 IP 地址的一种调度算法,该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器

    6、带复制的基于局部性的最少连接的连接算法 lblcr (Locality-Based Least Connections with Replication)
        记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高

    7、目标地址散列调度算法 dh (Destination Hashing)
        该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器

    8、源地址散列调度算法 sh (Source Hashing)

        与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源


五、参考资料

    http://www.cnblogs.com/liwei0526vip/p/6370103.html




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值