最近对LVS技术相当痴迷,相应的技术这里我就不在赘述了,有兴趣的朋友可以去LVS的上去看,哪里写的很详细,这里我仅把我的配置心得写出来,有不正确的地方还望各位看客指出
首先说下我的配置环境
大环境:vmware6.0,centOS4.4
LVS架构: LB-2.187(vip:2.186)
| |
| |
| |
RS01 RS02
(2.188) (2.189)
实现目的: 1,简单实现负载均衡
2,不对后端服务器进行健康检查
IPVS安装可以到下载最新的ipvsadm软件,下载后执行以下操作
ln -s /usr/src/kernels/2.6.9-42.EL-i686/ /usr/src/linux
rpmbuild --rebuild ipvsadm-1.24-6.src.rpm
rpm -ivh /usr/src/redhat/RPMS/i386/ipvsadm-1.24-6.i386.rpm
LB上的配置在/usr/local/bin下建立startlvs.sh脚本,加入如下内容
echo 1 >/proc/sys/net/ipv4/ip_forward
ifconfig eth0:0 192.168.2.186 netmask 255.255.255.255 broadcast 192.168.2.186 up
/sbin/route add -host 192.168.2.186 dev eth0:0
ipvsadm -A -t 192.168.2.186:80 -s rr
ipvsadm -a -t 192.168.2.186:80 -r 192.168.2.188 -i
ipvsadm -a -t 192.168.2.186:80 -r 192.168.2.189 -i
|
然后将脚本加入到/etc/rc.local中以便开机自动运行
Realserver上的配置
在/usr/local/bin下建立starttunl.sh,加入如下内容:
modprobe ipip
ifconfig tunl0 192.168.2.186 netmask 255.255.255.255 broadcast 192.168.2.186 up
/sbin/route add -host 192.168.2.186 dev tunl0 echo "2">/proc/sys/net/ipv4/conf/all/ arp_announce
echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/tunl0/arp_announce echo "1">/proc/sys/net/ipv4/conf/tunl0/arp_ignore
|
如此,已经简单的lvs就配置完成了,我使用webserver stress tool进行的模拟用户访问,realsever上启动lighttp,在LB上执行ipvsadm -l,显示如下:
[root@LVS-LB01 bin]# ipvsadm -l
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.186:http rr
-> 192.168.2.189:http Tunnel 1 0 250
-> 192.168.2.188:http Tunnel 1 0 251
|
webserver stress tool返回的结果如下
URL No. | Name | Clicks | Errors | Errors [%] | Time Spent [ms] | Avg. Click Time [ms] |
1 |
| 250 | 0 | 0.00 | 3,695 | 15 |
如果此时我将后端的RS服务停一台会看到如下显示结果:
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.186:http rr
-> 192.168.2.189:http Tunnel 1 0 250
-> 192.168.2.188:http Tunnel 1 0 250
|
ipvsadm依然会把请求投递到后端RS
来看下webserver stress tool的结果
URL No. | Name | Clicks | Errors | Errors [%] | Time Spent [ms] | Avg. Click Time [ms] |
1 |
| 492 | 242 | 49.19 | 1,865 | 7 |
很明显已经能看到有一半的errors了
几点说明:
1,此lvs并支持健康检查,一但后端有一台服务停了,LB并不会知道,依旧会把服务投递到后端
2,我是用的VS/TUN的方式实现的LVS
3,策略我使用的rr方式,如需要其他策略,请自行更改
阅读(1728) | 评论(0) | 转发(0) |