lvs 的负责均衡有四种常用模式,分别为dr模式、nat模式、tun模式、fullnat模式。
- lvs/nat: nat模式。修改请求报文的目标ip,多目标ip的dnat。
-
lvs/dr:directrouting(直接路由)。操纵封装新的mac地址。
-
lvs/tun:tunneling(隧道)。在原请求ip报文之外新加一个ip首部。
-
lvs/fullnat:full nat。修改请求报文的源和目标ip。
nat 模式
vs/nat是一种最简单的方式,所有的realserver只需要将自己的网关指向director即可。客户端可以是任意操作系统,但此方式下,一个director能够带动的realserver比较有限。在vs/nat的方式下,director也可以兼为一台realserver。
重点:修改目标ip地址为挑选出的rs的ip地址。
①、当用户请求到达director server,此时请求的数据报文会先到内核空间的prerouting链。此时报文的源ip为cip,目标ip为vip。
②、prerouting检查发现数据包的目标ip是本机,将数据包送至input链
③、ipvs比对数据包请求的服务是否为集群服务,若是,修改数据包的目标ip地址为后端服务器ip,然后将数据包发至postrouting链。此时报文的源ip为cip,目标ip为rip
④、postrouting链通过选路,将数据包发送给real server
⑤、real server比对发现目标为自己的ip,开始构建响应报文发回给director server。此时报文的源ip为rip,目标ip为cip
⑥、director server在响应客户端前,此时会将源ip地址修改为自己的vip地址,然后响应给客户端。此时报文的源ip为vip,目标ip为cip
工作流程 用户请求lvs到达director,director将请求的报文的目的ip有vip改为rip,同时将报文的目标端口也改为realserver的相应端口,最后将报文发送到realserver上,realserver将通过网关路由到director,将数据返回给director,director在相应客户端之前,把数据包的源ip有rip改为vip,然后响应用户,将数据发送给用户。
特点
- nat模式修改的是目的ip,可根据目的ip找到realserver,所以vip和rip不需要在同一个网段内。
-
nat的包的进出都需要经过lvs,所以lvs可能会成为一个系统的瓶颈问题。
fullnat 模式
fullnat模式和nat相似,只是数据包在过lvs时,不只修改目的ip,源ip也一块修改了。
特点
- fullnat模式也不需要dip和rip在同一网段。
-
fullnat和nat相比的话:会保证rs的回包一定可到达lvs。
-
fullnat需要更新源ip,所以性能正常比nat模式下降10%。
dr 模式
vs/dr方式是通过改写请求报文中的mac地址部分来实现的。director和realserver必需在统一个局域网内(相同机房)。 realserver上绑定的vip配置在各自non-arp的网络设备上(如lo或tunl),director的vip地址对外可见,而realserver的vip对外是不可见的。realserver的ip可谓内网ip, 也可为公网ip。
重点:将请求报文的目标mac地址设定为挑选出的rs的mac地址
①、当用户请求到达director server,此时请求的数据报文会先到内核空间的prerouting链。此时报文的源ip为cip,目标ip为vip。
②、prerouting检查发现数据包的目标ip是本机,将数据包送至input链
③、ipvs比对数据包请求的服务是否为集群服务,若是,将请求报文中的源mac地址修改为dip的mac地址,将目标mac地址修改rip的mac地址,然后将数据包发至postrouting链。此时的源ip和目的ip均未修改,仅修改了源mac地址为dip的mac地址,目标mac地址为rip的mac地址
④、由于ds和rs在同一个网络中,所以是通过二层来传输。postrouting链检查目标mac地址为rip的mac地址,那么此时数据包将会发至real server。
⑤、rs发现请求报文的mac地址是自己的mac地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。此时的源ip地址为vip,目标ip为cip
⑥、响应报文最终送达至客户端
工作流程 用户请求lvs到达director,director将请求的报文的目的mac地址改为后端的realserver的mac地址,目的ip为vip(不变),源ip为client ip地址(不变),然后director通过arp广播将报文发送到realserver,realserver检测到目的地址为自己本地的vip,如果在同一网段,将请求直接返回给用户,如果用户跟realserver不在同一个网段,则需要通过网关返回给用户。
特点
- rs跟director server必须有一个网卡在同一个物理网络中
-
所有的请求报文经由director server,但响应报文不经过director server
-
所有的real server机器上必须配置vip地址(通常绑定lo)
tun 模式
ip隧道(ip tunneling)是将一个ip报文封装在另一个ip报文的技术,这可以使得目标为一个ip地址的数据报文能被封装和转发到另一个ip地址。ip隧道技术亦称为ip封装技术(ip encapsulation)。ip隧道主要用于移动主机和虚拟私有网络(virtual private network),在其中隧道都是静态建立的,隧道一端有一个ip地址,另一端也有唯一的ip地址。
重点:在原有的ip报文外再次封装多一层ip首部,内部ip首部(源地址为cip,目标iip为vip),外层ip首部(源地址为dip,目标ip为rip)
①、当用户请求到达director server,此时请求的数据报文会先到内核空间的prerouting链。此时报文的源ip为cip,目标ip为vip。
②、prerouting检查发现数据包的目标ip是本机,将数据包送至input链
③、ipvs比对数据包请求的服务是否为集群服务,若是,在请求报文的首部再次封装一层ip报文,封装源ip为为dip,目标ip为rip。然后发至postrouting链。此时源ip为dip,目标ip为rip
④、postrouting链根据最新封装的ip报文,将数据包发至rs(因为在外层封装多了一层ip首部,所以可以理解为此时通过隧道传输)。此时源ip为dip,目标ip为rip
⑤、rs接收到报文后发现是自己的ip地址,就将报文接收下来,拆除掉最外层的ip后,会发现里面还有一层ip首部,而且目标是自己的lo接口vip,那么此时rs开始处理此请求,处理完成之后,通过lo接口送给eth0网卡,然后向外传递。此时的源ip地址为vip,目标ip为cip
⑥、响应报文最终送达至客户端
工作流程 用户请求lvs到达director,director通过ip-tun加密技术将请求报文的包封装到一个新的ip包里面,目的ip为vip(不变),然后director将报文发送到realserver,realserver基于ip-tun解密,然后解析出来包的目的为vip,检测网卡是否绑定了vip,绑定了就处理这个包,如果在同一个网段,将请求直接返回给用户,否则通过网关返回给用户;如果没有绑定vip就直接丢掉这个包。
特点
-
tunnel必须在所有的realserver上绑定vip
-
realserver直接把包发给client
-
隧道模式运维起来会比较难,所以一般不用
-
不支持端口映射
-
rip、vip、dip全是公网地址