LVS四层转发模式:DR模式、TUNNEL模式、NAT模式、
FULLNAT模式
1.DR模式
要求调度器 LB 与真实服务器 RS 都有⼀块⽹卡连接到同⼀物理⽹段上,必须在同⼀个局域⽹环境。(使⽤MAC地址确定真实服务器) RS需要配置VIP与LB的IP相同。
2.TUNNEL模式
简单来说IP隧道技术就是将【IP数据包】的上⾯再封装⼀层【IP数据包】,然后路由器根据最外层的IP地址路由到⽬的地服务器,⽬的地服务器拆掉最外层的IP数据包,拿到⾥⾯的IP数据包进⾏处理。
⽤户请求负载均衡服务器,当IP数据包到达负载均衡服务器后
根据算法选择⼀台真实的服务器,然后通过IP隧道技术将数据包原封不动再次封装,并发送给真实服务器
当这个数据包到达真实服务器以后,真实服务器进⾏拆包(拆掉第⼀层的IP包)拿到⾥⾯的IP数据包进⾏处理,然后将结果直接返回给客户端。
3.NAT模式
NAT模式对⼊报⽂做了DNAT,即将报⽂的⽬的地址改为RS的地址,但源地址不变;
出报⽂到了LVS(需要LVS作为⽹关)设备上后做SNAT,即将报⽂的源地址改为LVS设备上的地址,⽬的地址不变。
4.FULLNAT模式
FULLNAT模式对⼊报⽂做了DNAT+SNAT,即将报⽂的⽬的地址改为RS的地址,源地址改为LVS设备地址;
出报⽂到了LVS(不必要配置为⽹关)设备上后做SNAT+DNAT,即将报⽂的源地址改为LVS设备上的地址,⽬的地址改为真实的⽤户地址。
问题
⼀般来说,我们不需要使⽤FULLNAT,但是有⼀种场景,必须使⽤FULLNAT(或者类似的技术)
通常LVS是为了解决外部访问集内部的问题,但是在我们的⼀个⽣产环境上,我们遇到了必须在集内部的server1,向
负载均衡服务器有哪些
server2/server3(提供sysdb)写log的场景。 server2/server3对外提供了VIP,⽤户可以从集外部通过LVS来访问,但是server1访问sysdb的时候,会有路由问题。server1发出的syn报⽂(使⽤的server2/server3的VIP),经由LVS转发给了server2,⽽server2应答的syn+ack报⽂,由于syn报⽂的源地址是server1,⽽server1跟server2在同⼀局域⽹内,所以server1会直接将该报⽂转发给server1,⽽不经过LVS。所以就会不通。
有了fullnat,syn报⽂经过LVS的处理以后,源地址改为LVS的LIP(Local IP)、⽬的地址改为了server2的地址,所以,对于server2来说,该syn请求就是LVS发起的,所以syn+ack报⽂还是会应答给LVS服务器;⽽应答报⽂再经过LVS处理,源地址改为LVS的EIP(External IP),⽬的地址改为server1的地址,所以对于server1来说,请求得到了正确的应答,连接可以建⽴。
fullnat解决了集内部互相访问的问题。在阿⾥内部,应该还有更⼴阔的应⽤(例如虚机之间通信)。不过,据说青云曾经指出fullnat的⼀个弊端,即对于Real Server来说,⽆法审计真实的客户端,只能向LVS(阿⾥叫做SLB)请求。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论