IPVS(IP Virtual Server) && LVS (Linux Virtual Server)

LVS

1.1、介绍

LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。

1.2、服务三层架构

A、负载调度器(load balancer):是服务器集群系统的唯一入口点(Single Entry Point),它可以采用IP负载均衡技术、基于内容请求分发技术或者两者相结合,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。

B、服务器池(server pool):是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。

C、共享存储(shared storage):它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

IPVS

2.1、介绍

简单来说是使用IP负载均衡技术实现的负载均衡调度器:
 1. ipvs工作在kernel中,是真正的用于实现根据定义的集群转发规则把客户端的请求转发到特定的realserver
 2. ipvsadm是工作在用户空间的一个让用户定义ipvs规则的工具。

只要安装ipvsadm软件包就可以定义ipvs规则,而在linux kernel的2.6版本之后kernel是直接支持ipvs

2.1、IPVS负载的三种模式

2.1.1、Virtual Server via Network Address Translation(VS/NAT )网络地址转化

通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
来回请求均需要通过网络地址转化Nat

缺点:由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。

2.1.2、 Virtual Server via IP Tunneling(VS/TUN)IP隧道技术

调度器把请求报文通过^[IP隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。]转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。这样集群系统的吞吐量就有很大提升。

2.1.3、 Virtual Server via Direct Routing (DR) Mac改写

VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上

区别

  1. NAT:就是数据进出都通过调度器,性能不是很好。

  2. TUN:请求经过调度器,由后端真实服务器直接响应,必须支持隧道协议,有ip隧道的开销,也有额外公网ip需求。

  3. DR: 客户端请求通过调度器,调度器转发给真实服务器,真实服务器会直接返回给客户端而不通过LVS,性能最好,这个模式也是最常用的。