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
#########实验会结合下一篇一起配置###########