群集负载均衡--LVS-DR群集理论篇

LVS-DR的工作原理

DR模式概述

●负载均衡群集工作模式–直接路由(Direct Routing)

●简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络

●负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
在这里插入图片描述

LVS-DR数据包流向的分析

●为方便进行原理分析,将Client与群集机器放在同一网络中,数据包流经的路线为1-2-3-4

●核心点:LVS服务器和web服务器会一起协商一个vip虚拟IP地址,这个IP地址就会作为客户端的访问地址
在这里插入图片描述
●1.Client向目标VIP发出请求,Director(负载均衡器)接收

●IP包头及数据帧头信息

  • 源IP和目标IP不变
  • 源MAC:客户机的MAC地址
  • 目标MAC:LVS服务器的MAC地址
    在这里插入图片描述

●2.Director根据负载均衡算法选择RealServer_1,不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer_1的MAC地址,然后在局域网上发送IP包头及数据帧头信息
IP包头及数据帧头信息,转发途中IP地址不变,MAC地址在变

●IP包头及数据帧头信息

  • 源IP和目标IP不变
  • 源MAC:LVS服务器的MAC地址
  • 目标MAC:WEB服务器的MAC地址
    在这里插入图片描述

●3.RealServer_1收到这个帧,解封装后发现目标与本机匹配(RealServer事先绑定VIP),于是处理这个报文。随后重新封装报文,发送到局域网

●IP包头及数据帧头信息

  • 源MAC地址:WEB服务器的IP地址
  • 目标MAC地址:客户端的IP地址
  • 也就是说是WEB端直接回复客户端,不需要经过LVS服务器,区别于NAT模式
    在这里插入图片描述

●4.Client接收到回复报文。Client认为得到正常的服务,而不会知道是哪一台服务器处理的

●注意:如果跨网段,则报文通过路由器经由Internet返回给用户
在这里插入图片描述

LVS-DR中的ARP问题

●在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱

  • 当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播
  • 只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播

●需要启用arp过滤功能,过滤web服务器的回应功能,只让lvs服务器去回应路由器;目的就是让lvs服务器成为唯一入口
在这里插入图片描述
●对节点服务器进行处理,使其不响应针对VIP的ARP请求

  • 使用虚接口lo:0承载VIP地址
  • 设置内核参数arp_ignore=1:系统只响应目的的IP为本地IP的ARP请求

●RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址

●发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址

  • 如ens33接口
    在这里插入图片描述
    在这里插入图片描述

●路由器收到ARP请求后,将更新ARP表项

●原有的VIP对应地Director的MAC地址会被更新为VIP对应RealServer的MAC地址
在这里插入图片描述
●问题:
路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效
在这里插入图片描述

在这里插入图片描述

●解决方法:
对节点服务器进行处理,设置内核参数arp_annouce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址

解决ARP的两个问题的设置方法

修改/etc/sysctl.conf文件
●对节点服务器进行处理,使其不响应针对VIP的ARP请求

  • net.ipv4.conf.lo.arp_ignore = 1
  • net.ipv4.conf.lo.arp_announce = 2

●系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址

  • net.ipv4.conf.all.arp_ignore = 1
  • net.ipv4.conf.all.arp_announce = 2

#########实验会结合下一篇一起配置###########

猜你喜欢

转载自blog.csdn.net/Cpureman/article/details/108348732