设为首页 收藏本站
查看: 1165|回复: 0

[经验分享] LVS之DR模型架构

[复制链接]

尚未签到

发表于 2019-1-5 14:50:09 | 显示全部楼层 |阅读模式
所有的Director和RealServer都在同一个物理网络中(交换机)并且都只有一块网卡,交换机前面有个路由器,这个路由器可能是我们机房内部的,也有可能是网络运行商的。  

  
当客户端的请求被送到R2和Switch之间的时候,这个时候源ip是cip,目标地址是vip。vip一定在Director上是毋庸置疑的,所以这个报文就背送到Director的vip网卡上。
  
当客户端的请求被送到Switch和Director之间的时候,这个时候源ip仍然是cip,目标地址是vip。Director发现当前本机配置的有vip地址,所以请求的一定是当前主机
  
所以报文经过Prerouting链到达Input链,而监控在Input链上的ipvs规则发现请求的是一个集群服务,比如监听在80端口的web集群服务。这个时候lvs要根据ipvs规则
  
等等要修改报文了,在LVS-DR模型下报文送到Director上的时候,Director不会拆它的IP首部,也不会拆它的TCP首部,Director只要将MAC地址或者帧首部拆掉了。
  
为什么Director要拆开帧首部MAC地址呢?因为报文的目的地址就是Director本地主机,只要到达目的主机,网卡就会拆开帧首部的。因为目标MAC就是本地主机。
  
拆掉帧首部以后,查看IP首部和TCP首部,它发现请求的报文访问的是一个集群服务。
  
因此为了实现LVS-DR模型的效果,在源有的IP首部之上(切记源IP、目标IP、源端口、目标端口等等没有动),仅仅是在原有的报文外面又重新封装了一个MAC地址帧首部
  
帧首部有源MAC和目标MAC,这个时候发送的主机是Director。于是Director把本地网卡的MAC地址作为整个报文的源MAC地址,而目的MAC就是选择的后端某台RealServer
  
[选择后端的某台RealServe是Director根据它的一些调度算法(rr,wrr...)选择的]。假如选择的是RealServer2,那么会找到RealServer2 IP对应的MAC地址,于是找到了
  
RealServer2网卡对应的MAC地址,它是通过ARP地址解析找到的RealServer2对应的MAC地址。
  
那么Director到RealServer2之间的报文传送是源MAC地址是Director网卡对应的MAC地址,目标MAC地址是RealServer2网卡对应的MAC地址。
  
RealServer2接收到报文以后,发现请求的报文真的是自已,于是拆掉了MAC的帧首部,拆掉后发现请求的报文源地址是cip,目标地址是VIP。如果RealServer2上没有VIP
  
,那么RealServer2是不会接受这个报文的,因此必须在每个RealServer上配置VIP地址。因为RealServer2上有VIP地址,报文被接收下来,拆掉了IP首部,发现了报文
  
请求的是一个服务,比如80 因为传输层没有做任何修改,用户请求的是80服务,那么RealServer2接收到的报文也是请求的80服务。如果RealServer2上有80服务,于是
  
RealServer2把这个请求转交给用户空间的进程,由用户空间处理完成后,向外响应的。而请求报文的源地址是CIP,目标地址是VIP。那么尽可能让它使用CIP是目标地址
  
VIP是源地址,于是这个响应报文直接被发送到了交换机上。
  

  
当RealServer2响应报文到达Switch的时候,这个时候源地址是VIP,目标地址是CIP。
  
因为目标地址是CIP,假如VIP和CIP不在同一个网段当中,这个时候要根据目标地址CIP做路由选择,比如默认路由,网关才能响应CIP的报文请求
  
大家都知道目标地址CIP是互联网地址,那么每个RealServer的网关要指向哪呢??????
  
要指向能够访问互联网的设备,不应该指向Director的DIP地址。而是直接指向了能够访问互联网的路由设备。所有(很有可能)指向的是R2路由的私有地址做网关。
  
为什么是很有可能而不是说一定呢????
  

  

  
当报文被送到Switch和R2的时候,这个时候的源地址是VIP,目标地址是CIP。那么这个时候报文被送到R2网关的时候,R2发现目标地址是互联网的地址CIP,它会通过
  
路由NAT然后被送到CIP上的。
  

  

  

  
这里要考虑一个问题,为了实现每台RealServer在向外发送响应报文的时候,可以把VIP作为源地址,因此我们在每台RealServer上配置了VIP地址。
  

  
假如客户端发送请求报文被送到R2路由器的时候,那么R2路由器会拆开客户端的请求报文发现源地址是CIP,目标地址是VIP;无论是将请求送给Director还是RealServer,必须要根据
  
MAC地址向内转发,因为在同一网段,那么它怎么知道VIP对应的MAC地址是什么呢????
  
那么将进行广播说:‘我知道有一个家伙的VIP地址,那么请告诉我它对应的MAC地址’,那么它发送的广播请求,同一网段的所有主机都能收到,于是配置有VIP地址的所有主机都进行相应并告诉自已的MAC地址,那么如果所有的主机都进行相应,那么前端的路由设备就混乱了,它就无法分辨谁才是VIP对应的MAC地址。
  
默认情况下,谁相应的快,就会把客户端的请求报文发送给那台主机,如果被送到RealServer2 那么就不符合我们负载均衡的条件了。
  
那么我们在这里需要做一个非常重要的事情,就是每台配置有RealServer的VIP地址不给予ARP响应。那么我们如果屏蔽它不能响应呢?
  
那么所有的RealServer上都要关闭对ARP广播的响应。
  
要达到的目的:让我们的前端路由或者网关,实现报文发送的时候,仅仅能够将报文对目标IP为VIP发送给Director?
  
实现的方式有以下三种:
  
1、在R2路由器的内部接口上手动绑定一个静态的解析地址,明确指明目标是VIP的MAC一定是Director的MAC
  
   那么以后发送报文的时候就不用再次请求了,可以由指定的静态解析地址直接发送给Director
  
   这个绑定是静态的也不会失效
  
   缺点:
  
   R2路由是内部路由器,那么VIP是私有地址;如果R2是网络运营商提供的路由设备,也就是VIP是公网地址,我们就无法再R2上进行静态绑定了。
  
2、arptables:
  
   基于MAC地址做访问控制的,我们只需要在每台RealServer上定义arptables规则,如果用户的arp广播请求的目标地址是本机的VIP则不给予响应或者响应的报文不出去。
  
   那么这个情况所有的RealServer上不响应arp广播请求,只有Director响应给路由则报文就必然被发送给Director。
  
3、kernel paramter:
  
    arp_ignore
  
    arp_announce
  
    作用:限定我们的Linux主机对arp广播请求的响应级别,以及向外通告自已ip地址的通告级别的。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-659735-1-1.html 上篇帖子: LVS-DR负载均衡-02 下篇帖子: 转载一篇写的简单易懂的lvs用法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表