关于LVS的几种转发模式

1、LVS的nat(dnat)转发模式

关于LVS的几种转发模式_第1张图片 从上面的数据包转发流程可以知道,后端服务器最后如果想将数据包回复给客户端,则必须将数据包发往LVS调度器,由LVS调度器经过 NAT 转化,重新封装数据包,再将数据包发送回客户端。如果后端服务器回复给客户端的数据包,不经过LVS服务器的NAT转化就直接发送到客户端的话,客户端会直接丢弃,因为响应的数据包源目IP与请求的数据包源目IP并不对应。因为nat模式需要后端服务器将请求发回至LVS调度器,所以这种模式下LVS调度器也就成为了整条转发链路的瓶颈且nat模式需要查询nat转发表来对数据包进行nat转化,所以nat模式的转发效率是比较低的,但是配置也相对简单。

LVS的dnat模式下,为了让后台服务器发出去的包经过LVS调度器,后端服务器就需要将网关地址设备为LVS调度器的地址,也就是说后端服务器要和LVS调度器在同一个局域网内,不然后端服务器发出去的请求无法到达LVS调度器,直接发往客户端就会出问题。

2、LVS的full-nat转发模式

关于LVS的几种转发模式_第2张图片

从上面的流程可以知道,LVS的full-nat模式和dnat模式的区别在于,full-nat模式下,LVS调度器会修改 数据包的源目ip和mac,做一个完全的nat转化之后再发送到后端服务器上。其余的数据转发流程和dnat是一样的,这里就不再重复描述。

在full-nat模式下,LVS和后端服务器可不在同一局域网内,也就是说后端服务器不需要把网关地址设置为LVS调度器,只要网络可达即可,也就意味着后端服务器可以和LVS调度器不同网段,这样后端服务器集群扩展性好点。

总结:LVS的两种nat转发模式效率都不高,因为数据转发过程都需要做相应的nat转化,比较耗费且容易出现性能瓶颈,因为流量转发都通过LVS调度器来转发,但是配置起来却相对简单。

3、LVS的DR模式

关于LVS的几种转发模式_第3张图片从上面的流程可以知道,LVS的DR模式下,后端服务器最后可以通过网络直接将请求发送回客户端,不需要经过LVS调度器,这就最大限度的提供了性能。但是因为LVS调度器在将数据包转发给后端服务器的时候仅改写了MAC地址,通过mac直接将数据包转发到后端服务器上,这就要求后端服务器和LVS调度器要在同个局域网内,否则无法实现转发。

在这种DR模式下,流量不需要再次经过LVS调度器进行转发,但是后端服务器却被限制在和LVS调度器同个二层网络下,后续后端服务器的集群扩展受到限制,不能夸网段和机房。优点是相对于nat模式,转发能力提升了。 

4、LVS的隧道模式

关于LVS的几种转发模式_第4张图片

  ​​​从上面的流程可以知道,LVS的隧道模式会通过建立隧道来转发数据包,当LVS调度器将请求发送给后端服务器的时候,会封装多一层IP头部信息,再将数据包发送给后端服务器,后端服务器接收到数据包之后,拆开第一层IP头部报文之后再将请求直接发送回客户端。在这种模式下,后端服务器可以和LVS不在一个网段,可以跨网段甚至是异地机房,这种模式的转发效率虽然没DR模式高,但是隧道模式下,后端服务器的扩展能力和冗余性却大大提高了。

下面是隧道模式下在后端服务器物理网卡的一些抓包分析:

关于LVS的几种转发模式_第5张图片

关于LVS的几种转发模式_第6张图片从上面两幅图可以看到客户端去访问后段web服务器的时候,不管是前期的TCP连接请求简历还是后面的http请求,LVS调度器都会将客户端请求添加多一层ip报文,然后转发到后端服务器上。最后后端服务器再将请求直接发送回客户端。

下面是隧道模式下在后端服务器tunl0网卡的一些抓包分析:

关于LVS的几种转发模式_第7张图片 关于LVS的几种转发模式_第8张图片

从上面两幅图可以看到客户端的请求包到tunl0网卡的时候会拆掉外层的IP头,剩下内部的IP头信息,最后后端服务器将数据包请求直接发送回客户端。

你可能感兴趣的:(服务器,运维)