码迷,mamicode.com
首页 > 其他好文 > 详细

LVS负载均衡服务(一)

时间:2016-02-23 06:21:18      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:lvs   负载均衡   服务器   linux   高并发   

1.LVS的介绍:

  LVS服务器全称为Linux Virtual Server,由章文嵩博士开发。LVS工作在TCP/IP协议栈上(netfilter/input链上),根据IP/PORT实现数据包的转发、调度,并且能够根据不同的算法,实现调度策略。

  注:由于LVS工作在netfilter/input链上,所以无法和IPTABLES同时使用。


2.为什么要使用LVS?

  由于互联网人数的直线式增长,导致了WEB服务器资源占用量的急剧增加,这时会出现硬件资源不够用的情况下,此时要想继续为用户提供服务,就必须对硬件资源进行扩充。要么纵向对硬件服务器进行升级(甚至是更换硬件),要么横向扩展增加服务器的数量。然而对硬件服务器进行升级通常是有限的,此时就只能考虑第二种方式,增加服务器的数量。

  打个比方:A公司有一个网站,最开始有2000名用户,同时在线最高有1600人,服务器完全应付的过来。但是后来他们对论坛做推广,用户数骤增到4000名,当在线人数高于2000人服务器就会直接挂掉。于是团队对服务器进行硬件升级,增加了3个CPU,16G内存,此时服务器已经达到部件升级的顶级,但是仍然无法应付。这时有了三个方案:

  (1)买一台更高级的,把旧的替换掉;

  (2)买一台同样的配置的服务器,对其做负载均衡;

  (3)买一台更高级的,新旧同时做负载均衡;

  这三个方案中,作为老板来讲很显然是最后两个更容易接受。假设A公司选择了第二或第三种方案,并且两台服务器提供了同样的资源,此时如何让用户访问一个域名时能分配到不同的服务器?比较简单的可以做DNS负载均衡,不过,这种负载均衡仅能提供IP的轮流解析,无法实现更高级的算法,当其中一台服务器的用户活跃度比另一台高的时候,就代表你的负载均衡失效,如果不幸挂掉后果可想而知。

  这时就需要LVS了,正如第一段所述,LVS不仅仅可以根据IP/PORT实现负载均衡,还可以根据不同的算法实施不同的调度策略,所以其应用场景更加广泛,并且他工作于Linux的内核中,占用资源非常的少,但是效率非常的高。


3.LVS的两个模块:

  LVS提供两个模块,ipvsadm和ipvs,ipvs类似于netfilter,是一个规则的实施模块,ipvsadm是一个规则的配置工具,需要用户自行安装。


4.LVS的算法:

  算法,就是解决问题的步骤。LVS根据为其配置的调度算法对数据进行分发。LVS有8种调度算法,从而实现不同场景、不同需求的负载调度机制。

 大体可分为两种:

  4.1 固定调度:不考虑后端服务器的状态因素(例如活动连接数),按照规则对数据进行分发。

    4.1.1 rr:轮询,对后端服务器轮流进行数据分发。

    4.1.2 wrr:加权轮询,根据权重对后端服务器进行数据分发。

    4.1.3 sh:源地址hash,将相同客户端请求分给上次相同的Real Server,实现会话绑定

    4.1.4 DH:目标地址hash,将同一个目标IP地址的请求发送给同一个Server,类似于sh,应用于Cache服务器。

  4.2 动态调度:考虑后端服务器的状态因素,并依照其状态进行计算实现策略分发。

    4.2.1 lc:最少连接:

    active*256+inactive;哪台服务器的值小分发给谁;结果一样按IP规则选项;

    4.2.2 wlc:加权最少连接:

    (active*256+inactive)/weigth;哪台服务器值小分发给谁;结果一样按IP规则选项;

    4.2.3 lblc:基于本地的最少连接;

    尽可能的将同一个目标IP的请求发送给同一个服务器;

    4.2.4 lblcr:基于本地的带复制功能的最少连接

    Cache服务器共享缓存数据,尽可能的将同一个目标IP地址的请求发送给主Cache Server。

  LVS的默认调度算法是wlc,请求数量非常大的收获,非活动连接(inactive)不能忽略。


5.LVS的三种工作模式:NAT、DR、TUN及注意事项

  5.1 NAT:地址转换,多目标DNAT

  NAT模式。此模式中,LVS位于Client与Real Server之间,LVS需要处理Client请求与Real Server响应请求。大致流程、逻辑架构如下:

技术分享

  我们总结一下NAT特性:

    1.所有数据经由LVS转发并做地址转换
    2.集群节点必须和Director在同一网络中(real server网关需指向DIP,所以要在同一网络中)
    3.real server网关必须指向DIP(所有数据经由LVS转发,所以必须指向DIP)
    4.real server可以配置私网、公网地址
    5.Director可以做端口映射

    6.real server可以使用任何操作系统

  NAT模式的缺点:

    由于所有数据包都需要经由LVS转换NAT并转发,所以会导致LVS服务器繁忙的处理NAT操作,导致分发(调度)计算能力下降,易成为瓶颈。所以此模式并不适合生产环境使用,但是面试的时候很可能会问到其特性,最好可以记一记。


  5.2 DR:直接路由

  DR模式。此模式中,LVS位于Client与Real Server之间,不过LVS仅处理Client请求。大致流程、逻辑架构如下

技术分享

  注:LVS是配置的Real Server的IP地址,是RIP,而不是VIP。当数据包来的时候,LVS计算并分配一台服务器,然后得到其RIP,发起ARP广播,获取到RIP的MAC,将这个包发送出去。当Real Server接收到的时候,他发现目标地址是VIP,而恰巧VIP自己也有配置,所以就处理了!

  我们总结一下DR特性:

    1.Director只负责请求报文
    2.Director必须和Real Server在同一物理网络中(因为请求是由MAC地址分发的)
    3.RIP可以配置为公网地址,实现远程管理
    4.Director通过MAC来实现分发请求到Real Server
    5.Director不能做端口映射、Real Server的网关不能指向Director
    6.需要拒绝Real Server的对VIP的ARP应答。


  5.3 TUN:隧道模式

  TUN模式。此模式中,LVS位于Client与Real Server之间,与DR一样,LVS仅处理Client请求。大致流程、逻辑架构如下:

技术分享


  我们总结一下TUN特性:

    1.Director可以和Real Server不在同一网络中
    2.Director只接收请求报文
    3.Director通过重新封装IP首部进行请求分发
    4.生产环境中,不同IDC机房的情况下,RIP必须为公网地址
    5.Real Server必须是支持TUN的操作系统


最后附一张特性图:


技术分享


本文出自 “bigmanager” 博客,请务必保留此出处http://minux.blog.51cto.com/8994862/1744080

LVS负载均衡服务(一)

标签:lvs   负载均衡   服务器   linux   高并发   

原文地址:http://minux.blog.51cto.com/8994862/1744080

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!