负载均衡之LVS/DR模式
DR的负载均衡调度器工作在网络七层协议中的数据链路层,也就是第二层。它通过修改数据包的目标MAC地址,将数据包转发到实际应用服务器上,最重要的是,实际服务器的响应数据包将直接返回给用户端,而不需要经过负载调度器。
一、LVS种基本模式
NAT,[FULLNAT],TUNNEL(隧道),DR(直连路由)
二、LVS、DR简介
LVS 是Linux Virtual Server的简称,在实际环境中经常作为B/S结构的网络应用中的负载均衡器来使用,工作在7层网络模型中的,网络层,也就是通常说的IP层,由于数据的处理是在Linux内核态完成的,所以相对反向代理服务器来说,性能一般会高一些; DR 是Direct Routing直接路由的简称,应答包通过单独的路由方法返回给客户端。不需要隧道结构,因此可以使用大多数linux操作系统做为物理服务器。
三、简单的LVS/DR架构图
首先,用户通过互联网访问LVS上的vip(虚拟ip),进入LVS/DR模式,LVS将数据包提供给dip(反向代理服务器);反向代理服务器最终将请求送给应用服务器;应用服务器完成用户请求之后,通过反向代理服务器直接返回给用户,而不需要通过LVS服务器。
四、操作路程
1、首先,在realsever上配置lo回环网卡,绑定vip。然后设置lo接口的VIP不能响应本地网络内的arp请求。
# ip addr add dev lo192.168.122.100/32
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
2、DR分发器设置
# yum -y install ipvsadm
# ipvsadm -A -t 192.168.122.100:80 -s rr
# ipvsadm -a -t 192.168.122.100:80 -r 192.168.122.10 -g
# ipvsadm -a -t 192.168.122.100:80 -r 192.168.122.20 -g
# ipvsadm -a -t 192.168.122.100:80 -r 192.168.122.30 -g
这里的-g就是代表直连路由模式
3、测试
用一台能路由到VIP的机器访问VIP,不断刷新就可以看见结果。
五、总结
1、性能
相对LVS/NAT模式,DR模式不需要把返回的数据,通过负载均衡是被转发,想要他发挥优势,那么就要相应的数据包的数量和长度远远大于请求数据包,幸运的是,大部分WEB服务都具备这样的特点,响应和请求并不对称,因此常用的WEB服务,都可以使用这种模式。
这种方式,负载均衡器不再是系统的瓶颈。如果你的负载均衡器只拥有100M的全双工网卡和带宽的话,通过集群的横向扩展也可以让整个系统达到1G的流量。
来自LVS官方站点的测试结果也告诉我们,LVS-DR可以容纳100台以上的实际应用服务器,对一般的服务而已,这样的表现足够了。
2、缺点
DR模式下不能跨网段转发数据,如果必须要跨网段进行负载,那么就必须使用LVS/TUN模式。当然,这一般都是比较大型的服务了,一般不会用但以的LVS。