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 [email protected]
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模式下的不同。