Chinaunix首页 | 论坛 | 博客
  • 博客访问: 320145
  • 博文数量: 50
  • 博客积分: 3052
  • 博客等级: 中校
  • 技术积分: 710
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-03 12:13
文章分类
文章存档

2009年(10)

2008年(40)

我的朋友

分类: LINUX

2008-04-17 18:05:29

最近对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.NameClicksErrorsErrors [%]Time Spent [ms]Avg. Click Time [ms]
1
25000.003,69515
如果此时我将后端的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.NameClicksErrorsErrors [%]Time Spent [ms]Avg. Click Time [ms]
1
49224249.191,8657
很明显已经能看到有一半的errors了

几点说明:
1,此lvs并支持健康检查,一但后端有一台服务停了,LB并不会知道,依旧会把服务投递到后端
2,我是用的VS/TUN的方式实现的LVS
3,策略我使用的rr方式,如需要其他策略,请自行更改
阅读(1728) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~