LVS工作模式 DR direct routing
- 在DR模式中,所有的RS需要配置两个地址:RIP和VIP
- 在DR模式中,LVS会通过arp获取到所有RS的IP地址和对应的MAC地址,因此LVS和RS需处于同一二层网络中
- 当User发送请求到LVS后,LVS保持源目IP地址和端口号不变司时将源MAC地址换成自己的MAC地址,目的MAC地址换成调度到的RS MAC进行转发
- RS在回响应报文时,源地址是VIP地址,源端口号为提供服务的端口号,源MAC地址为自己的MAC地址,目的地址为客户端地址,目的端口号为客户端发起连接请求时的随机端口,目的MAC地址为网关的MAC地址
DR模式配置要点
- DR是LVS的默认模式,它的本质是重新封装请求报文,将源MAC地址替换为DIP所在接口的MAC地址,目标MAC地址设置为RS的RIP所在接口的MAC地址,源目IP和端口都保持不变。在这个模式下,仅有请求报文经过LVS,响应报文则不经过LVS,这样就可以减轻LVS的负荷,提高整个业务流程的性能
- RS上配置的VIP需和LVS的VIP保持一致,为了防止地址冲突,需要在RS上关闭VIP所承载网卡的arp广播功能和arp应答功能
- 在DR模式中, LVS的DIP和RS的RIP需在同一网段。 RIP和VIP可以不在同一网段
- 所有的VIP一般都配置在回环口上
- DR模式中,在LVS上不支持修改端口号
- DR模式中,由于要求DIP和RIP在同一网段,因此无法进行大规模或远距离部署
DR模式调度器DS配置步骤
- 配置虚拟IP地址(VIP)
ip addr add 192.168.xx.xx dev lo
- 配置负载分配策略
ipvsadm -C # 清除所有规则
ipvsadm -A -t 192.168.x.x:80 -s rr # 添加虚拟服务器,使用轮询(rr)调度算法
ipvsadm -a -t 192.168.x.x:80 -r 192.168.x.xx:80 -g # 添加真实服务器,使用DR模式(-g)
DR模式真实服务器RS配置步骤
- 配置虚拟IP地址(VIP)
ip addr add 192.168.xx.xx dev lo
- 添加路由
为每个真实服务器添加一条路由记录,将访问VIP的数据限制在本地,以避免通信紊乱:
ip route add 192.168.xx.xx/32 dev lo
- 调整内核ARP响应参数
在/etc/sysctl.conf 文件中添加如下配置
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
测试时注意事项
当Client、RIP、VIP处于同一网段下时,LVS完成客户端client代理过后,同一客户端由于缓存的存在,再次发起的请求和相应都不会经过DS了,此时会发现客户端得到的响应一直都来自同一RS