LVS/Tun 实验

LVS网站与参考:http://www.linuxvirtualserver.org/

linux AS4 *3
kernel 2.6.9

DirectorServer 211.67.64.106/255.255.255.224
RealServer1    211.67.64.54/255.255.255.224
RealServer2    211.67.64.81/255.255.255.224
Client         211.67.66.229

网络结构:
                                          Client
                                              |
                                              |
                                           WAN
                                              |
                                              |
====VLAN1============VLAN2===========VLAN3====
         GW                                  GW                                 GW
 211.67.64.97                211.67.64.33               211.67.64.65
         |                              |                            |
         |                              |                            |
DirectorServer                  RealServer1                RealServer2


DirectorServer的配置:

net.ipv4.ip_forward = 1

echo 1 > /proc/sys/net/ipv4/ip_forward
ifconfig tunl0 211.67.64.107 broadcast 211.67.64.107 netmask 255.255.255.255 up
route add -host 211.67.64.107 dev tunl0

ipvsadm -C
ipvsadm -A -t 211.67.64.107:80 -s rr
ipvsadm -a -t 211.67.64.107:80 -r 211.67.64.54:80 -i
ipvsadm -a -t 211.67.64.107:80 -r 211.67.64.81:80 -i

RealServer的配置:

ifconfig tunl0 211.67.64.107 netmask 255.255.255.255 broadcast 211.67.64.107 up
route add -host 211.67.64.107 dev tunl0
echo “1” > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo “2” > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo “1” > /proc/sys/net/ipv4/conf/all/arp_ignore
echo “2” > /proc/sys/net/ipv4/conf/all/arp_announce

做完之后访问http://211.67.64.107,可以通过 ipvsadm -Lc 查看当前的连接分发情况,但是通过域名访问虚拟主机出现403错误,apache日志显示所有请求都在apache默认web目录,日志可以记录client原始IP的访问信息。

用脚本看了下发现到达realserver的http请求中,SERVER_ADDR为IP隧道的IP:211.67.67.107,修改了realserver中原有httpd.conf的虚拟主机配置,如下:

NameVirtualHost 211.67.64.81
NameVirtualHost 211.67.64.107


   ServerAdmin webmaster@e21.edu.cn
   DocumentRoot /data/webapp/test
   ServerName test.e21.cn

以前一直使用的是NAT硬件模式的负载分发,这点修改有点不太习惯。同时做了一下端口监控,当client下载测试网站2G的文件,DS带宽占用为150K左右,RS带宽占用为6.5M,如文档所示,用户流量从webserver发出后并未经过分发节点,以此来最大程度提高DS的分发效率。

也在client和real上抓了一下包看看IPVS/Tun的过程:

在client上抓包,和一般访问web一样,全部都是与211.67.64.107的连接包信息;
在Realserver上抓包,显示的是211.67.64.107与客户端的链接包信息;

# tcpdump port 80
15:02:01.158739 IP 211.67.64.107.http > 211.67.66.229.16248: . 900820:902280(1460) ack 1 win 6432
15:02:01.158742 IP 211.67.64.107.http > 211.67.66.229.16248: . 902280:903740(1460) ack 1 win 6432

这几天抽空简单的实验了下,还有ldirectord对于RS健康监控的部分,同时还有IPVS/DR模式下的不同。

发表评论