class="markdown_views prism-kimbie-light">
LVS的DR模式:Direct Routing直接路由模式
DR模式的工作过程
第一步:用户对一个网站进行数据请求时,在浏览器输入网站域名,请求会被发送到DNS服务器进行域名解析,DNS服务器将域名解析成IP地址发送给客户端。
第二步:客户端拿到IP后通过网络访问该IP会到达IP所在地址的路由器,路由器将请求转发到内网中的交换机(内网的所有节点都在交换机上连接),由于此时请求的目标IP和目标mac都是DR的,所以该请求只能被DR接收,
第三步:DR接收到请求之后会重新进项封装
- 通过预先定义好的算法找出一个RS的mac地址
- 将请求报文的目标mac改为找出的那个RS的mac
- 最后将这个修改了mac地址的请求报文发送出去
第四步:因为这是内部网络,所有节点都会收到这个请求数据包
- 后端的RS服务器判断收到的数据中的目标IP和目标mac是否与自己的相同,相同的会处理该数据包,不相同的自动丢弃
- 处理完成后,RS服务器会将结果通过交换机、路由器直接发送给客户端,不在经过DR
补充:
-
为了让DR RS可以接受请求,就必须要使DR和所有的RS服务器有相同的IP,这个IP就是VIP(VirtualIP),为了防止引起IP冲突我们需要将VIP绑定在本地的网络回环接口之上(lo)
-
还有一个问题后端多个节点都有一个相同的vip,那么客户端在请求获取mac地址的时候,就不可避免的出现arp争抢。
解决方法:在RS服务器上设置arp抑制,即不让RS服务器对arp请求做应答,这样就保证了DR和RS服务器有相同VIP的情况下客户端能准确获取DR的mac地址。
-
ARP请求:获取ip所对应的mac地址
DR模式总结:
- 调度器(DR)仅仅修改的目标的mac地址
- 响应报文是直接发送给客户端,不在经过调度器
- RS和DR必须在容一个局域网中
- DR无法修改请求报文中的目标端口,所以RS的端口必须和DR端口一致
- DR和所有RS服务器都需要配置相同的VIP
- 所有的RS服务器都需要配置ARP抑制
- RS服务器必须可以和外网通信
- DR模式效率相对高,配置复杂,所以如果访问量小(pv<2000),建议用更简单的nginx haproxy