关于LVS-DR模式的理解
关于LVS-DR模式的理解
ali安东尼 发表于7个月前
关于LVS-DR模式的理解
  • 发表于 7个月前
  • 阅读 3
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

最近捣鼓LVS的时候,发现LVS的整个处理过程中,数据包的流向是非常有意思的。因此接着这个机会,和各位迷妹迷弟们分享关于LVS-DR模式的数据包流向,以及整体实现的关键点。话不多说,先放个大招压压惊。 输入图片说明

整个流向,大体是如下的,DR模式中,有2个关键点: 1. 客户端数据包到达路由器,发起对应VIP的ARP广播请求。此时由DIRECTOR回复对应IP的MAC地址,于是交换机便在本地mac地址表中,将director的mac地址绑定VIP,这样数据包才可以经由DIRECTOR流向后端的服务器,起到负载均衡的作用。 2. 由DIRECTOR指定后端的服务器,通过修改源mac地址和目标mac地址,从而可以将数据包转由后端的服务器,后端服务器直接以源IP地址为VIP响应客户端。 不过细心的读者,此时就会出现一个问题,客户端请求的是目标IP为VIP,而调度器和后端服务器,都配置有VIP,为什么交换机就可以直接将数据包发给调度器而不是后端服务器呢?所以在交换机二层的ARP广播方面,需要作出一定的策略,来限制ARP的响应。根据小普的理解,有以下的几点方法,可以任选其一: 1. 在交换机上绑定director的mac地址和vip(简单粗暴并且不可靠)。 2. 在upstream server上配置arptables,绑定相关的IP和MAC。(貌似需要考虑的问题较多) 3. linux内核中的法则:将vip地址配置在lo接口的边缘上,而不是物理网卡的边缘上。也可以在内核上配置一个法则,当收到vip的arp请求之后,后端的upstream server不响应,这个可以在内核参数上实现。(小普推荐的一种策略方法) 解决了这个ARP响应的问题之后,接下来的就简单啦!director此时需要将数据包转发给后端服务器,数据包的源和目标IP地址依旧没有改变,只不过目标mac地址改成了后端的mac地址,因此后端服务器就可以接收到此报文。 于是后端服务器收到一个目标mac地址和目标IP地址都是自己的数据包。 要实现以上的ARP限制回应的功能,就需要调整lvs-dr的2个arp响应的参数调整

  1. arp-announce:指的是自己对外部主动发起arp广播的策略,包括是否主动宣告等。0:表示通告自己全部的地址,1表示尽量避免通告非同一个网段的地址,2表示只通告最佳的本网段的地址,在lvs-dr中,我们选择arp-announce=2
  2. arp-ignore:指的是当别人对你发起arp请求的时候,你的响应的策略,这里我们就配置为,只响应那个物理网口的地址(即只响应自己的rip对应的mac请求的地址,不响应vip对应的mac请求的地址)

下面是小普举得一个简单的例子,关于lvs-dr的对应以上说明的一个具体实践的栗子。 l 前端调度服务器 lvs-director:eth0:192.168.2.138,对应mac地址:00-0c-29-9f-3c-90 vip-->eth0:0 192.168.2.136,对应mac地址:00-0c-29-9f-3c-90 l 后端服务器 Server1:eth0:192.168.2.139,对应mac地址:00-0c-29-9f-3b-91 vip-->eth0:0 192.168.2.136,对应mac地址:00-0c-29-9f-3b-91 l 在后端服务器上操作,先配置完内核参数,再配置IP地址,防止广播vip的mac地址 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce l 测试此时rs对vip的mac地址的请求,不会响应。收到的vip的mac,依旧是由前端调度服务器响应的mac地址。因此这里便实现了请求的数据包都必须经由调度器的功能。

输入图片说明

本期到这里的干货分享就结束啦,希望读者朋友们继续关注我们的微信公众号,我们的干货也会一直更新,谢谢大家。

由睿江云研发人员提供,更多精彩请留意www.eflycloud.com

共有 人打赏支持
粉丝 3
博文 192
码字总数 173101
×
ali安东尼
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: