用户的请求被调度器动态地分配到真实服务器上,真实服务器响应请求把结果直接返回给用户。不过,在这种模式下不会封装IP,而是将数据帧的MAC地址改为真实服务器的MAC地址。

模拟规则 主机名 IP VIP
调度器 dir 192.168.200.130 192.168.200.110
真实服务器1 rs1 192.168.200.131 192.168.200.110
真实服务器2 rs2 192.168.200.132 192.162.200.110

1.在dir上建立脚本文件lvs_dr.sh

  1. # vim /usr/local/sbin/lvs_dr.sh
  2. #! /bin/bash
  3. echo 1 > /proc/sys/net/ipv4/ip_forward
  4. ipv=/usr/sbin/ipvsadm
  5. vip=192.168.200.110
  6. rs1=192.168.200.131
  7. rs2=192.168.200.132
  8. #注意这里的网卡名字
  9. ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
  10. route add -host $vip dev ens33:2
  11. $ipv -C
  12. $ipv -A -t $vip:80 -s wrr
  13. $ipv -a -t $vip:80 -r $rs1:80 -g -w 1
  14. $ipv -a -t $vip:80 -r $rs2:80 -g -w 1

给予脚本文件执行权限

  1. # chmod +x /usr/local/sbin/lvs_dr.sh

运行脚本

  1. # bash /usr/local/sbin/lvs_dr.sh

2.在两个rs服务器上建立脚本lvs_nat.sh

  1. # vim /usr/local/sbin/lvs_nat.sh //rs1、rs2均执行
  2. #/bin/bash
  3. vip=192.168.200.110
  4. #把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
  5. ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
  6. route add -host $vip lo:0
  7. #以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
  8. #参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
  9. echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  10. echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
  11. echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  12. echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

两个服务器脚本相同
给予执行权限

  1. # chmod +x /usr/local/sbin/lvs_nat.sh

执行脚本

  1. #bash /usr/local/sbin/lvs_nat.sh

3.安装nginx ,更改默认页面

  1. # echo "rs1" > /usr/share/nginx/html/index.html //rs1上执行
  2. # echo "rs2" > /usr/local/nginx/html/index.html //rs2上执行

4.浏览器访问VIP

如果出现以下问题

  1. SIOCADDRT: File exists

重启网卡