实验用三台Vmware下虚拟的centos5.5服务器,一台作为负载调度器(Lvs-server),两台真实web服务器(web1,web2).
一、Lvs-nat实验:
配置IP:
1.window7下与虚拟机相连的网卡配置成8.8.8.1,不虚配置网关。
2.Lvs-server需要配置两块网卡,一块(eth0)模拟与外网连接(本实验下与Windows相连),一块(eth1)与内部真实服务器通信。eth0:8.8.8.8,eth1:192.168.10.1
3.web1:eth0:192.168.10.2
4.web2:eth0:192.168.10.3
配置web1,web2的默认网关地址为Lvs-server eth0地址,表示返回的信息通过Lvs-server给浏览器
此时需要在Lvs-server上安装Lvs软件,即ipvsadm
开启Lvs-server路由功能:echo 1 > /proc/sys/net/ipv4/ip_forward(此步必须执行,否则Lvs-server上两块网卡之间不能通信)
然后写调度脚本lvsnat.sh,
#!/bin/bash
#lvsnat.sh
ipvsadm -C(删除此前添加的所有的转化表)
ipvsadm -A -t(表示tcp协议) 8.8.8.8:80 -s rr(轮叫模式)
ipvsadm -a -t 8.8.8.8:80 -r 192.168.10.2:80 -m(把访问8.8.8.8的请求通过轮叫模式转到192.168.10.2服务器上,-m表示nat方式)
ipvsadm -a -t 8.8.8.8:80 -r 192.168.10.3:80 -m
ipvsadm -L -n(打印执行结果)
保存后赋予执行权,然后执行。
最后在windows的浏览器中输入8.8.8.8即可访问真实服务器上的网页。(注意,实验中必须关闭服务器防火墙,包括iptables 和selinux)
二、Lvs ip-tun:
实验设备与之前一致。
配置IP:
1.window7下与虚拟机相连的网卡配置成200.168.10.4,不虚配置网关。
2.Lvs-server只需要配置一块网卡,另外还需要配置tun(隧道网卡)。eth0:200.168.10.1,tunl0:200.168.10.10 netmask 255.255.255.255(此处4个255将200.168.10.10限定为另一个网段,此网段只有一个Ip)
3.web1:eth0:200.168.10.2,tunl0:200.168.10.10 netmask 255.255.255.255
4.web2:eth0:200.168.10.3,tunl0:200.168.10.10 netmask 255.255.255.255
修改路由表:
Lvs-server:route add -host 200.168.10.10 dev tunl0
web1:
route del default(删除上个实验添加的网关)
route add -host 200.168.10.10 dev tunl0
web2:
route del default
route add -host 200.168.10.10 dev tunl0
Lvs-server服务器脚本:
#!/bin/bash
#..
ipvsadm -C(删除此前添加的所有的转化表)
ipvsadm -A -t(表示tcp协议) 200.168.10.10:80 -s rr(轮叫模式)
ipvsadm -a -t 200.168.10.10:80 -r 200.168.10.2:80 :80 -i(把访问200.168.10.10:80 的请求通过轮叫模式转到200.168.10.2服务器上,-i表示ip-tun方式)
ipvsadm -a -t 200.168.10.10:80 -r 200.168.10.3:80 :80 -i
ipvsadm -L -n(打印执行结果)
执行脚本
然后写真实服务器脚本:
#!/bin/bash
#..
echo "1" > /proc/sys/net/ipv4/tunlo/arp_ignore
echo "2" > /proc/sys/net/ipv4/tunlo/arp_announce
echo "1" > /proc/sys/net/ipv4/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/all/arp_announce
(此段含义:外界访问200.168.10.10时忽略,而当Lvs-server将请求转发过来时响应,并把200.168.10.2的mac地址给交换机)
执行脚本
最后在windows的浏览器中输入8.8.8.8即可访问真实服务器上的网页。
Lvs dr与ip-tun相似,只不过在lvs-server上用eth0:0代替tunlo,在web1与web2上用lo代替tunlo,其他变动不大,此处不加详解。