LVS(Linux Virtual Server) 入门详解(2)

再讲第三种之前,我们先整理一下,我们把VS和RS上都设置有VIP的ip地址,然后不让RS上的RIP接口响应arp也不向别人通告自己,这样的话,当客户端对vip的请求发到本地网络时,发送arp广播问VIP对应的mac地址是多少呀?就只有VS的VIP响应说,啊,VIP的MAC地址就是我们这个MAC地址!然后网关就通过MAC地址将客户端的请求发送给VIP所在的接口,因为是客户端请求,最后由网关发送到VIP的。所以,从网关出去时源IP为CIP,目的IP为VIP,源MAC为网关接口的MAC,目的IP为VIP所在接口的MAC,VS接收到请求数据包之后,根据调度策略选择一个合适的RS,然后从VIP接口发出,到RS所在的RIP接口,此时,源IP还是CIP,目的IP还是VIP,源MAC是VS的VIP所在的接口MAC,目的MAC是RIP所在接口的MAC,然后RS接收到数据包后,查看一下,嗯目的IP是我接口的IP,目的MAC是我接口的MAC,然后继续解封装到应用层,把请求给对应的服务器程序。服务器收到程序后,再从RS的VIP发送响应数据,此时源IP就为送出接口的IP即VIP,目的IP就是CIP啦~然后就实现所谓的响应报文不经过调度器啦。有没有感觉牛逼吊炸天呀 !!!!!!简直不要太牛!!!!不过有个问题还是没解决,RIP收到请求数据包后,在从此接口发出去的时候源IP依然是RIP,怎样才能实现上文提到的源IP为VIP呢?LVS在此处的设计相当精巧。在linux中有个思想就是,ip是属于内核的而不是接口的。即接口a上 有个IP1,接口b上有个ip2,当从a接口收到一个数据包,问接口a你有没有ip2呀,接口a回复说我有ip2,然后接口a收到ip2的数据包之后就转发给接口b。还有一点,一个数据包从哪个接口发出去,它的源 IP就是哪个接口的ip,即从接口a发出去的数据包的源ip为接口a的ip,但是从接口a发出,但转发到接口b发送给另外一个接口,源ip还是接口a的ip。根据这两个常识,第三种的实现如下:RS接收数据包的接口依然是RIP,但是我们把VIP设置到lo0环回接口上,因为接口a都会把lo0接口上的VIP告诉别人,所以我们得通过设置内核参数让ip地址就属于接口本身,不属于接口的ip他不能告诉别人。第二,我们让数据包从lo0口发出,然后从RIP所在的接口发送给外部主机,这样源IP就是lo0接口所在的VIP啦~~~~有木有很精巧!!!可以根据上面的图示进行理解。

因为LVS-dr模式是通过修改目的MAC地址来把请求报文从VS发送到RS的,而且MAC不能跨网络,所以LVS-dr模式只能用在同一广播域中。如果我们向把RS放在各个地方的不同网络中,怎么办?这就是我们接下来要讲的类型。

高可用集群技术之Keepalived实现LVS高可用并负载均衡Web服务  

LVS简单实现NAT&DR模型

LVS集群类型简介 

《LVS手册》 

Linux负载均衡软件LVS 

使用LVS实现负载均衡原理及安装配置详解 

第一个就是LVS内核本身支持的类型LVS-tun,tun就是tunnel的简写即隧道。如果熟悉vpn的道友,肯定对隧道不陌生。不过,我们还是来仔细讲讲咯~

LVS(Linux Virtual Server) 入门详解

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e1d93a4fb6db42cb6b806745426e25f7.html