开发团队要测试云存储,要求搭建一个tomcat的负载均衡集群,首先考虑使用lvs实现负载,技术实现成本低,做云存储就是为了节约存储硬件设备的成本。因为考虑是测试环境暂时没有对lvs的director做高可用配置,我会考虑在空闲时间做一个

测试环境:rhel4.8   64位系统

集群设备:3台测试机,2台做tomcat单点web应用,1做director(web请求分发器)(3台测试机都在同一交换机、同一网段)

director :inet addr:192.168.2.107  Bcast:192.168.7.255  Mask:255.255.248.0

realserver:inet addr:192.168.3.57  Bcast:192.168.7.255  Mask:255.255.248.0

                  inet addr:192.168.2.51  Bcast:192.168.7.255  Mask:255.255.248.0

VIP:192.168.2.111

1、环境搭建前的准备,因为系统是4.8的,首先我查看了一下内核是否支持lvs,2.4.23以后版本的内核源代码支持lvs(uname -a查看系统信息),下载ipvsadm地址http://www.linuxvirtualserver.org/software/ipvs.html; 我用的是ipvsadm-1.24.tar.gz

    安装ipvsadm

   #mv  ipvsadm-1.24.tar.gz  /usr/local

  #cd  /usr/local

   #tar zxvf ipvsadm-1.24.tar.gz

  #cd ipvsadm-1.24(可以阅读一下README文件)

  #make &&make install(make时可能会报错,需要做一个软连接,

ln -s /usr/src/kernels/2.6.9-89.EL-smp-x86_64 /usr/src/linux)

2、配置2台realserver的4个内核参数,vip等

     ssh连上一台realserver服务器,执行下列命令(另一台服务器也要做相同设置)

     #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
     #ifconfig lo:0 192.168.2.111 broadcast 192.168.2.111 netmask 255.255.255.255 up
     #route add -host 192.168.2.111 dev lo:0                        

//注释:

arp_announce   
 限制级别0  1  2值。默认是0
 0),所有地址全部告诉
 1),尽可能不告诉不在同一网络的地址
 2),只告诉最佳网络地址
arp_ignore
 0),
 1),在哪个网卡收到回复哪个,其他地址不予响应
 2),接收到的要与发送方在同一网络才相应,否则不通信

3、配置director
 #ifconfig eth0:1 192.168.2.111 broadcast 192.168.2.111 netmask 255.255.255.255 up  //设置vip
 #route add -host 182.168.2.111 dev eth0:1    //添加路由
 #echo 1 > /proc/sys/net/ipv4/ip_forward     //开启路由功能
 #ipvsadm -A -t 192.168.2.111:8080 -s wlc         //设置新的转发服务
 #ipvsadm -a -t 192.168.2.111:8080 -r 192.168.2.51 -g -w 20       //转发规则
 #ipvsadm -a -t 192.168.2.111:8080 -r 192.168.3.57 -g -w 10       //

//注释:-A添加新的转发服务 ;-s指定dr模型的算法; -rweb应用的真实ip地址;-g指定使用lvs的dr模型 ; -w是web服务器的权重(因为开发没有对持久连接和https服务等作出要求,所以这里就简单地配置一下)

4、安装jdk与tomcat

tomcat解析java程序需要java的开发环境,这里jdk版本有一台32位的realserver用的自身的1.4的版本的,有一台上面跑的是resin用的1.5的jdk,因此只给出过程:

jdk下载后

#chmod +x jdk-6u14-dlj-linux-i586.bin

#./jdk-6u14-dlj-linux-i586.bin 

输入yes回车

mv  jdk-*   jdk

设置java的环境变量

vi  /root/.bash_profile

export JAVA_HOME=/usr/local/jdk

export PATH=$JAVA_HOME/bin:$PATH    
export CLASSPATH=JAVA_HOME/lib/dt.jar   
export TOMCAT_HOME=/usr/local/tomcat     
export LANG=zh_CN.GBK                               //这个主要看开发人员用的什么字符集再设置,

保存退出

测试java

#java -version   //能正确显示java版本就正常了

安装tomcat

去官网下载tomcat,这里使用apache-tomcat-6.0.35.tar.gz

#tar zxvf apache-tomcat-6.0.35.tar.gz

#mv apache-tomcat-6.0.35  /usr/local/tomcat   //要与刚才设置的环境变量一致

两台realserver上面相同安装配置,然后修改web文件

#vi  /usrlocal/tomcat/webapps/ROOT/index.html    //可以先备份一份  

(或者echo 本机真实IP > index.html                         //为了测试能否转发请求)

清空原有内容只输入本机真实IP测试用

启动tomcat

/usr/local/tomcat/bin/startup.sh

查看8080端口是否开启

netstat  -tnlp | grep 8080

用浏览器访问虚拟IP192.168.2.111:8080

在director上查看分发连接状态

#watch -n 1 'ipvsadm -L -n'

压力测试

#ab –c 10 –n 5000 http://192.168.2.111:8080/

我搭建完成后用ie浏览器访问总是无法连接,偶尔会有一次连接上了,很是着急,做了一遍又一遍也没发现什么地方有问题,后来去同事电脑上浏览器一访问竟然可以,伤心啊,我又在自己电脑上换了个浏览器终于好使了,真是伤不起的ie。由于tomcat可能本身就有持久连接的配置,因此一个浏览器页面F5狂刷新只显示一个IP地址,(连接上后,要等10秒左右再刷新,会连接并显示另一台realserver)但是做ab压力测试会正常分发!