研究了两天的时间终于磕磕绊绊的把lvs配置完成了,下面把过程记录下来备忘。系统环境如下
- server1:192.168.10.165 vip server linux rhel rs3 kernal 2.4.21-37
- server2:192.168.10.162 apache+resin linux rhel rs4 kernal 2.6.9-22
- server3:192.168.10.131 apache+resin linux rhel rs4 kernal 2.6.9-22
- vip:192.168.10.100
- port:7001
下面的安装是在vip server上进行的
1、查看自己的操作系统的内核 #uname -a
2、as3一般用的是2.4.21-37.EL的内核,这个内核已经包括了ipvs的补丁,进行如下的操作就可以3、下面建立一个指向,为了保证ipvsadm安装
- # modprobe ip_vs
- # cat /proc/net/ip_vs
- 出现如下的提示
- IP Virtual Server version 1.0.8 (size=65536)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- 从提示中我们可以看到,安装了1.0.8的内核,这里我们需要ipvsadm 1.21-10的版本
- # rpm -q kernel-source
- kernel-source-2.4.21-37.EL
- # cd /usr/src
- # ln -s linux-2.4.21-37.EL linux
4、重新编译和安装ipvsadm
- # rpmbuild --rebuild ipvsadm-1.21-10.src.rpm
- 重新编译的rpm文件一般会放到/usr/src/redhat/RPMS/i386下,安装该rpm文件
- # rpm -vih ipvsadm-1.21-10.i386.rpm
- 安装完成后可以通过ipvsadm命令查看是否安装成功
- # ipvsadm
- IP Virtual Server version 1.0.8 (size=65536)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
接下来配置VIP服务器
5、配置VIP脚本
接下来重新启动一下 reboot / init 6,启动后运行刚才的脚本,会出现下面的显示,说明配置成功了!
- IP Virtual Server version 1.0.8 (size=65536)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP 192.168.8.100:7001 rr
- -> 192.168.36.108:7001 Route 1 0 0
- -> 192.168.8.162:7001 Route 1 0 0
- #!/bin/sh
- #create in 20070509 by yezi
- # description: start LVS of Directorserver
- VIP=192.168.8.100
- RIP1=192.168.8.162
- RIP2=192.168.8.131
- #RIPn=192.168.0.128~254
- GW=192.168.8.254
- . /etc/rc.d/init.d/functions
- case "$1" in
- start)
- echo " start LVS of DirectorServer"
- # set the Virtual IP Address
- /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
- /sbin/route add -host $VIP dev eth0:0
- #Clear IPVS table
- /sbin/ipvsadm -C
- #set LVS
- /sbin/ipvsadm -A -t $VIP:7001 -s rr
- /sbin/ipvsadm -a -t $VIP:7001 -r $RIP1:7001 -g
- /sbin/ipvsadm -a -t $VIP:7001 -r $RIP2:7001 -g
- #/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g
- #Run LVS
- /sbin/ipvsadm
- #end
- ;;
- stop)
- echo "close LVS Directorserver"
- /sbin/ipvsadm -C
- ;;
- *)
- echo "Usage: $0 {start|stop}"
- exit 1
- esac
接下来配置realserver
6、配置realserver脚本
- #!/bin/bash
- #description : start realserver
- VIP=192.168.8.100
- /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
- /sbin/route add -host $VIP dev lo:0
- echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
- echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
- echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
- echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
- sysctl -p
- #end
分别在两台realserver上运行该脚本,然后重新启动resin和apache,至此配置已经完成了,下面来看看测试的过程
首先在vip server上打开控制台,你会看见lvs的列表:
- # ipvsadm -Ln
- IP Virtual Server version 1.0.8 (size=65536)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP 192.168.8.100:7001 rr
- -> 192.168.8.131:7001 Route 1 0 0
- -> 192.168.8.162:7001 Route 1 0 0
从这里我们可以看到有两台realserver在后台提供转发后的访问,打开浏览器,输入http://192.168.8.100:7001/xxx,浏览器会返回你访问的web的结果,在打开另外一个浏览器输入同样的地址,返回同样的结果,然后回到控制台看看情况:
- IP Virtual Server version 1.0.8 (size=65536)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP 192.168.8.100:7001 rr
- -> 192.168.8.131:7001 Route 1 0 1
- -> 192.168.8.162:7001 Route 1 0 1
发现InActConn变成了1,表示两个服务器都接收到了转发,同时还可以打开apache的log,会发现刚才的web访问已经发送到两台realserver了,表明配置成功了!
ipvsadm命令
下面看看lvs控制台的基本命令
- # ipvsadm -A -t 192.168.8.100:80 -s rr
- rr:表示轮询的方法,缺省为wcl
- # ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.180:80 -g
- -a:添加一个realserver
- -r:realserver的地址
- -g:缺省参数
- # ipvsadm -e -t 192.168.8.100:80 -r 192.168.8.180:80 -w 100
- -e:修改-r参数的realserver
- -w:lvs转发通道的处理能力