开发团队要测试云存储,要求搭建一个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压力测试会正常分发!