关于LVS:
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。常用于负载均衡。
阅读前的约定:
VIP:即是LVS对外开放的公网IP地址。
LVS:表示作为负载均衡服务的主机。
RA...RN:表示真正提供服务的服务器主机。
CA...CN:表示客户机。
LVS的工作模式:
LVS的工作模式有三种,分别是NAT模式,DR模式,TUN模式。本文主要讲解DR模式,关于NAT模式以及TUN模式就做简单介绍。
NAT模式:顾名思义,该模式使用了NAT(Network Address Translation,网络地址转换)技术。当客户端CA的请求到达LVS时,LVS会根据负载调度算法选择一台真实主机RA,然后将请求包数据中的目标IP地址修改为RA的IP地址,然后转发至A服务器,A服务器处理完后再将响应结果返回给LVS,LVS将响应结果数据包中的原目标地址修改为VIP,将目标地址修改为CA的IP地址。(数据包流动方向为CA->LVS->RA->LVS->CA)
DR模式:该模式要求真实主机RA...RN也拥有VIP,当客户端CA请求到达LVS后,由LVS通过MAC欺骗技术转发至真实服务器RA,然后由RA直接对CA响应。(数据包流动方向:CA->LVS(使用MAC欺骗)->RA->CA)
TUN模式:即是隧道模式,当请求数据包从CA到达LVS时,LVS会对数据包封装一层IP数据报,然后将封装好的数据包发送至RA,最后由RA处理后,通过隐藏的VIP将响应数据发送到CA。(数据包流动方向:CA->LVS(隧道技术,即IP背IP)->RA->CA)
LVS的三种工作模式的缺点:
NAT模式:在该模式下,CA的请求,以及RA的响应都需要经过LVS的处理,尽管LVS不需要对CA和RA进行握手连接,但LVS的带宽仍然会成为该模式的瓶颈。对于请求数据包来说,包含的数据比较少,而对于响应数据包来说,包含的数据比较多。所以在一定时间内LVS可以处理较多的请求,但不一定能处理相同量的响应数据。
DR模型:由于NAT模型存在的缺陷,所以DR模型的目的是使响应数据包直接由RA发送到CA,不需要经过LVS的处理,这就要求RA拥有LVS中的VIP,而对于公网来说IP是唯一的,所以这里使用了VIP隐藏的技术,也就是使VIP对外隐藏,对内可见。将到达LVS的请求数据的目标MAC地址修改为RA的MAC,然后RA接收后处理,再使用隐藏的VIP直接对RA进行响应。该模式中的LVS和RA...RN必须在同一个局域网内,因为如果跨域的话MAC地址是会改变的,这样数据包最后还是会到达LVS。
TUN模型:由于DR中存在LVS和RA..RN必须在一个局域网的限制。所以TUN模型的出现就是为了突破这个限制,具体做法就是对CA到达LVS的数据包外加一层IP数据报,然后通过网络发送到达RA...RN,然后RA...RN通过隐藏的VIP直接对CA进行响应。