Chinaunix首页 | 论坛 | 博客
  • 博客访问: 172683
  • 博文数量: 76
  • 博客积分: 3560
  • 博客等级: 中校
  • 技术积分: 860
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-17 13:02
文章存档

2011年(2)

2010年(41)

2009年(33)

我的朋友

分类: LINUX

2010-09-16 15:34:27

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在后台提供转发后的访问,打开浏览器,输入,浏览器会返回你访问的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转发通道的处理能力  
阅读(295) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~