本文目录:
1. LVS简介
2. LVS-ipvs三种模式的工作原理
2.1 VS/NAT模式
2.2 VS/TUN模式
2.3 VS/DR模式
2.4 lvs-ipvs的三种模式比较
3. VS/TUN和VS/DR模式中的ARP问题
4. LVS负载均衡的调度算法
网站架构中,负载均衡技术是实现网站架构伸缩性的主要手段之一。所谓"伸缩性",是指可以不断向集群中添加新的服务器来提升性能、缓解不断增加的并发用户访问压力。通俗地讲,就是一头牛拉不动时,就用两头、三头、更多头牛来拉。
负载均衡有好几种方式:http URL重定向、DNS的A记录负载均衡、反向代理负载均衡、IP负载均衡和链路层负载。本文所述为LVS,它的VS/NAT和VS/TUN模式是IP负载均衡的优秀代表,而它的VS/DR模式则是链路层负载均衡的优秀代表。
1.LVS简介LVS中文官方手册:。这个手册对于了解lvs的背景知识很有帮助。
LVS英文官方手册:。这个手册比较全面,对于了解和学习lvs的原理、配置很有帮助。
LVS是章文嵩开发的一个国产开源负载均衡软件。LVS最初是他在大学期间的玩具,随着后来使用的用户越来越多,LVS也越来越完善,最终集成到了Linux的内核中。有不少开源牛人都为LVS开发过辅助工具和辅助组件,最出名的就是Alexandre为LVS编写的Keepalived,它最初专门用于监控LVS,后来加入了通过VRRP实现高可用的功能。
LVS的全称是Linux virtual server,即Linux虚拟服务器。之所以是虚拟服务器,是因为LVS自身是个负载均衡器(director),不直接处理请求,而是将请求转发至位于它后端真正的服务器realserver上。
LVS是四层(传输层tcp/udp)、七层(应用层)的负载均衡工具,只不过大众一般都使用它的四层负载均衡功能ipvs,而七层的内容分发负载工具ktcpvs(kernel tcp virtual server)不怎么完善,使用的人并不多。
ipvs是集成在内核中的框架,可以通过用户空间的程序ipvsadm工具来管理,该工具可以定义一些规则来管理内核中的ipvs。就像iptables和netfilter的关系一样。
2.LVS-ipvs三种模式的工作原理首先要解释的是LVS相关的几种IP:
VIP:virtual IP,LVS服务器上接收外网数据包的网卡IP地址。
DIP:director IP,LVS服务器上转发数据包到realserver的网卡IP地址。
RIP:realserver(常简称为RS)上接收Director转发数据包的IP,即提供服务的服务器IP。
CIP:客户端的IP。
LVS的三种工作模式:通过网络地址转换(NAT)将一组服务器构成一个高性能的、高可用的虚拟服务器,是VS/NAT技术。在分析VS/NAT的缺点和网络服务的非对称性的基础上,提出了通过IP隧道实现虚拟服务器的方法VS/TUN(Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。
2.1 VS/NAT模式客户端发送的请求到达Director后,Director根据负载均衡算法改写目标地址为后端某个RIP(web服务器池中主机之一)并转发给该后端主机,就像NAT一样。当后端主机处理完请求后,后端主机将响应数据交给Director,并由director改写源地址为VIP后传输给客户端。大多数商品化的IP负载均衡硬件都是使用此方法,如Cisco的LocalDirector、F5的Big/IP。
这种模式下:
RIP和DIP一般处于同一私有网段中。但并非必须,只要它们能通信即可。
各RealServer的网关指向DIP,这样能保证将响应数据交给Director。
VS/NAT模式的最大缺点是Director负责所有进出数据:不仅处理客户端发起的请求,还负责将响应传输给客户端。而响应数据一般比请求数据大得多,调度器Director容易出现瓶颈。
这种模式配置起来最简单。
2.2 VS/TUN模式采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务响应报文比请求报文大许多,采用VS/TUN技术后,调度器得到极大的解放,集群系统的最大吞吐量可以提高10倍。
VS/TUN模式的工作原理: