lvs+tomcat负载均衡集群搭建(dr模型)

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

你可能感兴趣的:(开发,测试,的)