Lvs dr(直接路由)的原理和实现
VS/DR通过改写请求报文的Mac地址,将请求发送到真实服务器而真实服务器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术可几大地提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。
网络结构图实验规划:
(1).将物理机上的VMnet1网卡的ip设置为200.168.10.4,子网掩码设置为255.255.255.0
(2).为Lvs服务器配置一块网卡eth0,网络连接设置为VMnet1,设置IP地址:ifconfig eth0 200.168.10.1
(3).为Lvs服务器的eth0网卡添加一个ip地址(vip):ifconfig eth0:0 200.168.10.10 netmask 255.255.255.255,配置单独的网段:route add -host 200.168.10.10 dev eth0:0
(4).Lvs dr服务器脚本:
ipvsadm -C
ipvsadm -A -t 200.168.10.10:80 -s rr(-t:采用tcp协议;-s:模式参数;rr:采用轮叫算法)
ipvsadm -a -t200.168.10.10-r 200.168.10.2 -g(-r:真实服务器ip;-g:dr模式)
ipvsadm -a -t200.168.10.10-r 200.168.10.3 -g
(5).为两台真实服务器配置一块网卡,网络连接设置为VMnet1,设置IP地址(rip):ifconfig eth1 200.168.10.2和ifconfig eth1 200.168.10.3
(6).为真实服务器的lo网卡添加一个ip地址(vip):ifconfiglo:0 200.168.10.10 netmask 255.255.255.255,配置单独的网段:route add -host 200.168.10.10 devlo:0
(7).真实服务器脚本:
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore(当arp请求目的ip为lo网卡上的ip时才应答)
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce(发送arp请求时,选择lo网卡mac地址进行发送)
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore(只回答目标IP地址是来访网络接口本地地址的ARP查询请求)
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce(忽略IP数据包的源IP地址,对查询目标使用最适当的本地地址,尝试选择能与源地址通信的网卡地址)
注1:交换机发送arp广播时,真实服务器的eth1网卡接收arp请求,将all设置arp_ignore为2可以忽略vip;
注2:可以使用tcpdump -i eth0 -nn进行抓包,监测tcp三次握手是否成功;
dr模式实验结果