LVS详解

LVS详解

负载均衡技术

1、为什么要使用负载均衡技术?

假如我们有一个咨询类的网站,之允许100个用户同时在线访问,网站上线初期,由于知名度比较小,通常只有几个用户经常上线,后期知名度提高了,百度和谷歌又收录了我们的网站,于是同时在线的用户量直线上升,很快达到了上千人,于是,网站负荷加重了,经常会“反应迟钝”,这时用户开始抱怨,为了不影响用户对我们的信心,就一定要想办法解决这个一个问题,

那么我们想想,如果有几台或者几十台相同配置的机器,前端放一个转发器,

轮流转发客户对网站的请求,每台机器将用户数控制在100以内,那么网站的反应速度就会大大提高,即使其中的某台服务器因为硬件故障了导致宕机了,也不会影响用户的访问,那么其中,这个神奇的转发器就是负载均衡(Director)

  那么什么是负载均衡呢?负载均衡建立在现有的网络结构之上,它提供了一种廉价、有效、透明的方法来扩大网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力,以及提高网络的灵活性和可用性,通过负载均衡器,我们可以实现N台廉价的Linux服务器并行处理,从而达到小型机或者大型机计算能力,这也是为何负载均衡如此流行的原因。

向上扩展(Scale ON所谓的向上扩展。就是把当前的服务器进行硬件升级。。硬件升级带来的效果不是线性的。如果架构设计不好。那么性能不但不能提升。而且还会下降。

向外扩展(Scale OUT):所谓的向外扩展。那么我们可以做Load Balancing:LB (负载均衡技术)

Ø  系统高可用性

Ø  系统可扩展性

Ø  负载均衡能力

LVS+keepalived能很好的实现以上的要求,LVS提 供负载均衡,keepalived提供健康检查,故障转移,提高系统的可用性!采用这样的架构以后 很容易对现有系统进行扩展,只要在后端添加或者减少realserver,只要更改lvs的 配置文件,并能实现无缝配置变更!

2Lvs介绍模式介绍

  (1)LVS

  LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡。LVSLinux Virtual Server的缩写,意思是Linux虚拟服务器。目前有三种IP负 载均衡技术(VS/NATVS/TUNVS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh

NAT负载模式

NAT用法本来是因为网络IP地址不足而把内部保留IP地址通过映射转换成公网地址的一种上网方式(原地址NAT)

如果把NAT的过程稍微变化,就可以 成为负载均衡的一种方式原理其实就是把从客户端发来的IP包的IP头目的地址在DR上换成其中一台REALSERVERIP地址并发至此 REALSERVER,REALSERVER则在处理完成后把数据经过DR主机发回给客户端,DR在这个时候再把数据包的原IP地址改为DR接口上的 IP地址即可期间,无论是进来的流量,还是出去的流量,都必须经DR,DR压力比较大。

 

NAT模式特点:

  集群节点跟Direcator 必须在同一个IP网络中。
  RIP通常是私有地址,仅仅用于个集群之间通信。
  director位于Client和real server之间,并负责处理进出的所有通信。
  realservet必须将网关指向DIP。同时也支持端口影射
  Realserver可以使用任意OS
  在较大应用规模当中,单个Director会出现瓶颈
  大概可以带10个左右的SERVER就会出现瓶颈。

LVS负载均衡模式 直接路由模式(DR

直接路由模式比较特别,很难说和什么方面相似,NATTUN种模式基本上都是工作在网络层上(三层),而直接路由模式则应该是工作在数据链路层上(二层)其原理 ,DRREALSERVER都使用同一个IP对外服务但只有DRARP请求进行响应,所有REALSERVER对本身这个IPARP请求保持静 也就是说,网关会把对这个服务IP的请求全部定向给DR,DR收到数据包后根据调度算法,找出对应的REALSERVER,把目的MAC地址改为 REALSERVERMAC并发给这台REALSERVER这时REALSERVER收到这个数据包,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端由于DR要对二层包头进行改换,所以DRREALSERVER之间必须在一个广播域,也可以简单的理解为在同一台交换机上

 

  DR模式特点:
     每个集群节点跟dr必须在同一个物理网络(局域网)当中(drweb不能隔了有路由器)
     VIP
可以使用公网地址,实现远程管理和监控
     director
只负责处理进站请求,响应的请求封装后直接由Relserver发给客户端。
     Realserver
不能将Direc当中网关。只能选择前当网关。
     Direc
不能支持端口映射。VIP的端口必须和WEB服务端口一致
    
大多数的操作系统都可以应用在relserver上。
     Direc
性能必NAT要好很多。处理速度提高N

TUN负载模式 IP隧道模式

隧道模式则类似于VPN的方式,使用网络分层的原理,在从客户端发来的数据包的基础上,封装一个新的IP头标记(不完整的IP,只有目的IP)发给 REALSERVER,REALSERVER收到后,先把DR发过来的数据包的头给解开,还原其数据包原样,处理后,直接返回给客户端,而不需要再经过 DR需要注意的是,由于REALSERVER需要对DR发过来的数据包进行还原,也就是说必须支持IPTUNNEL协议所以,REALSERVER 的内核中,必须编译支持IPTUNNEL这个选项IPTUNNEL也在Net working options里面

 

  TUN模式特点:

     集群节点可以跨越互联网。
       Relserver的RIP必须是公网地址(真实环境中)
       Director紧处理进站请求
       由Relserver直接响应客户端
       OS必须支持隧道协议,不支持端口映射.

 

 

LVS负载均衡的八种调度算法

  RR算法:LVS负载均衡算法1.轮叫调度(Round-RobinScheduling) 

  WRR算法:LVS负载均衡算法2.加权轮叫调度(WeightedRound-RobinScheduling)

  LC算法:LVS负载均衡算法3.最小连接调度(Least-ConnectionScheduling)

  WLC算法LVS负载均衡算法4.加权最小连接调度(WeightedLeast-ConnectionScheduling)

    LBLC算法:LVS负载均衡算法5.基于局部性的最少链接(Locality-BasedLeastConnectionsScheduling)

    LBLCR算法LVS负载均衡算法6.带复制的基于局部性最少链接(Locality-BasedLeastConnectionswithReplicationScheduling)

    DH算法:LVS负载均衡算法7.目标地址散列调度(DestinationHashingScheduling)

     SH算法:LVS负载均衡算法8.源地址散列调度(SourceHashingScheduling)

  (2)keepalived

  Keepalived 是运行在lvs 之上,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败 切换,提高系统的可用性

3lvs+keepalived架构图

 

 

4lvs持久性连接

对于电子商务网站来说,用户在挑选商品的时候使用的是80端口来浏览的,当付款的时候则是通过443ssl加密的方式,当然当用户挑选完商品付款的时 候,我们当然不希望https443跳转到另外一台REAL SERVER上,很显然应该是同一REAL SERVER才对,这时候就要用到基于防火墙标记的持久连接,通过定义端口的姻亲关系来实现。在生产环境中用的最多的也是PNMP即基于防火墙标记的持久 连接。好了引子就说到这下面我们就来详细说说LVS的持久连接……

1.PPCPersistent Port Connections):将来自于同一个客户端对同一个集群服务的请求,始终定向至此前选定的RS;(持久端口连接)
例如:client---->LVS(80)---->RS1 client---->LVS(23)---->RS2
缺陷:期望访问不同的端口到同一台RS上,无法实现。
配置:
ipvsadm -A -t 172.16.100.1:80 -s rr -p 3600
ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.10 -g -w 2
ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.11 -g -w 2

2.PCCPersistent Client Connections):将来自于同一个客户端对所有端口的请求,始终定向至此前选定的RS;(持久客户端连接)
  
说明:PCC是一个虚拟服务没有端口号(或者端口号为0),以"-p" 来标识服务。
  
缺陷:定向所有服务,期望访问不同的Real Server无法实现。
配置:
ipvsadm -A -t 172.16.100.1:0 -s rr -p 3600
ipvsadm -a -t 172.16.100.1:0 -r 172.16.100.10 -g -w 2
ipvsadm -a -t 172.16.100.1:0 -r 172.16.100.11 -g -w 2

3.PNMPPPersistent Netfilter Marked Packet Persistence):持久防火墙标记连接,根据iptables 的规则,将对于某类服务几个不同端口的访问定义为一类;

  先对某一特定类型的数据包打上标记,然后再将基于某一类标记的服务送到后台的 Real Server上去,后台的Real Server 并不识别这些标记。将持久和防火墙标记结合起来就能够实现端口姻亲功能,只要是来自某一客户端的对某一特定服务(需要不同的端口)的访问都定义到同一台 Real Server上去。

  案例:一个用户在访问购物网站时同时使用HTTP80)和HTTPS443)两种协议,我们需要将其定义到同一台Real Server上,而其他的服务不受限制。
配置:

iptables -t mangle -A PREROUTING -d 172.16.100.1 -i eth0 -p tcp --dport 80 -j MARK --set-mark 8

iptables -t mangle -A PREROUTING -d 172.16.100.1 -i eth0 -p tcp --dport 443 -j MARK --set-mark 8

ipvsadm -A -f 8 -s rr -p 600

ipvsadm -a -f 8 -r 172.16.100.10 -g -w 2

ipvsadm -a -f 8 -r 172.16.100.11 -g -w 1

四、持久连接命令

1.ipvsadm -A|E -p timeout

2.选项

3.-p timeout 指定持久连接时长,默认为360秒,单位是秒,即6分钟

http://www.it165.net/admin/html/201307/1565.html

 

posted on 2016-08-27 23:16  losbyday  阅读(703)  评论(0编辑  收藏  举报

导航