关于linux下用lvs实现负载均衡的配置过程

研究了两天的时间终于磕磕绊绊的把lvs配置完成了,下面把过程记录下来备忘。系统环境如下

  1. server1:192.168.10.165  vip server    linux rhel rs3 kernal 2.4.21-37
  2. server2:192.168.10.162  apache+resin  linux rhel rs4 kernal 2.6.9-22
  3. server3:192.168.10.131  apache+resin  linux rhel rs4 kernal 2.6.9-22  
  4. vip:192.168.10.100   
  5. port:7001  

下面的安装是在vip server上进行的

1、查看自己的操作系统的内核 #uname -a

2、as3一般用的是2.4.21-37.EL的内核,这个内核已经包括了ipvs的补丁,进行如下的操作就可以3、下面建立一个指向,为了保证ipvsadm安装

  1.     # modprobe ip_vs   
  2.     # cat /proc/net/ip_vs   
  3.     出现如下的提示   
  4.     IP Virtual Server version 1.0.8 (size=65536)   
  5.     Prot LocalAddress:Port Scheduler Flags   
  6.         -> RemoteAddress:Port Forward Weight ActiveConn InActConn   
  7.     从提示中我们可以看到,安装了1.0.8的内核,这里我们需要ipvsadm 1.21-10的版本  

 

  1. # rpm -q kernel-source     
  2.         kernel-source-2.4.21-37.EL   
  3. # cd /usr/src   
  4. # ln -s linux-2.4.21-37.EL linux  

4、重新编译和安装ipvsadm

  1. # rpmbuild --rebuild ipvsadm-1.21-10.src.rpm   
  2. 重新编译的rpm文件一般会放到/usr/src/redhat/RPMS/i386下,安装该rpm文件   
  3. # rpm -vih ipvsadm-1.21-10.i386.rpm   
  4. 安装完成后可以通过ipvsadm命令查看是否安装成功   
  5. # ipvsadm   
  6.     IP Virtual Server version 1.0.8 (size=65536)   
  7.     Prot LocalAddress:Port Scheduler Flags   
  8.         -> RemoteAddress:Port           Forward Weight ActiveConn InActConn   

接下来配置VIP服务器

5、配置VIP脚本

接下来重新启动一下 reboot / init 6,启动后运行刚才的脚本,会出现下面的显示,说明配置成功了!

  1. IP Virtual Server version 1.0.8 (size=65536)   
  2. Prot LocalAddress:Port Scheduler Flags   
  3.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn   
  4. TCP  192.168.8.100:7001 rr   
  5.   -> 192.168.36.108:7001          Route   1      0          0            
  6.   -> 192.168.8.162:7001           Route   1      0          0  

 

cpp 代码
  1. #!/bin/sh   
  2. #create in 20070509 by yezi   
  3. # description: start LVS   of  Directorserver   
  4. VIP=192.168.8.100   
  5. RIP1=192.168.8.162   
  6. RIP2=192.168.8.131   
  7. #RIPn=192.168.0.128~254   
  8. GW=192.168.8.254   
  9.   
  10. . /etc/rc.d/init.d/functions   
  11.   
  12. case "$1" in   
  13.     start)   
  14.         echo " start LVS  of DirectorServer"  
  15.        # set the Virtual  IP Address   
  16.        /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up   
  17.        /sbin/route add -host $VIP dev eth0:0   
  18.        #Clear IPVS table   
  19.        /sbin/ipvsadm -C   
  20.       #set LVS   
  21.       /sbin/ipvsadm -A -t $VIP:7001 -s rr   
  22.       /sbin/ipvsadm -a -t $VIP:7001 -r $RIP1:7001 -g   
  23.       /sbin/ipvsadm -a -t $VIP:7001 -r $RIP2:7001 -g   
  24.       #/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g   
  25.       #Run LVS   
  26.       /sbin/ipvsadm   
  27.       #end   
  28.       ;;   
  29.     stop)   
  30.         echo "close LVS Directorserver"  
  31.         /sbin/ipvsadm -C   
  32.       ;;   
  33.     *)   
  34.         echo "Usage: $0 {start|stop}"  
  35.         exit 1   
  36. esac  

接下来配置realserver

6、配置realserver脚本

  1. #!/bin/bash    
  2. #description : start realserver     
  3. VIP=192.168.8.100   
  4. /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up   
  5. /sbin/route add -host $VIP dev lo:0   
  6. echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore   
  7. echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce   
  8. echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore   
  9. echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce   
  10. sysctl -p   
  11. #end  

分别在两台realserver上运行该脚本,然后重新启动resin和apache,至此配置已经完成了,下面来看看测试的过程

首先在vip server上打开控制台,你会看见lvs的列表:

cpp 代码
  1. # ipvsadm -Ln   
  2. IP Virtual Server version 1.0.8 (size=65536)   
  3. Prot LocalAddress:Port Scheduler Flags   
  4.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn   
  5. TCP  192.168.8.100:7001 rr   
  6.   -> 192.168.8.131:7001           Route   1      0          0            
  7.   -> 192.168.8.162:7001           Route   1      0          0  

从这里我们可以看到有两台realserver在后台提供转发后的访问,打开浏览器,输入http://192.168.8.100:7001/xxx,浏览器会返回你访问的web的结果,在打开另外一个浏览器输入同样的地址,返回同样的结果,然后回到控制台看看情况:

  1. IP Virtual Server version 1.0.8 (size=65536)   
  2. Prot LocalAddress:Port Scheduler Flags   
  3.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn   
  4. TCP  192.168.8.100:7001 rr   
  5.   -> 192.168.8.131:7001           Route   1      0          1            
  6.   -> 192.168.8.162:7001           Route   1      0          1    

发现InActConn变成了1,表示两个服务器都接收到了转发,同时还可以打开apache的log,会发现刚才的web访问已经发送到两台realserver了,表明配置成功了!

ipvsadm命令

下面看看lvs控制台的基本命令

添加一个Service
  1. # ipvsadm -A -t 192.168.8.100:80 -s rr      
  2. rr:表示轮询的方法,缺省为wcl  
添加一个realserver
  1. # ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.180:80 -g    
  2. -a:添加一个realserver   
  3. -r:realserver的地址   
  4. -g:缺省参数   
修改realserver
  1. # ipvsadm -e -t 192.168.8.100:80 -r 192.168.8.180:80 -w 100   
  2. -e:修改-r参数的realserver   
  3. -w:lvs转发通道的处理能力  

你可能感兴趣的:(apache,.net,linux,浏览器,脚本)