两台CentOS5.2上apache+tomcat的负载均衡(2009-06-05 16:37:28)
标签:it分类:linux 两台CentOS5.2上apache+tomcat的负载均衡
今天在在真实的服务器上测试通过,目前总共测试了5天(抚琴煮酒),另需要说明的是现在网上以讹传讹的文章太多,这篇文章有时间我会持续更新的,大家暂时就不要转了,目前没做session复制的相关测试。
所需软件
apache-tomcat-6.0.18.tar.gz
jdk-1_5_0_17-linux-i586-rpm.bin
tomcat-connectors-1.2.27-src.tar.gz
httpd-2.2.11.tar.gz
在两台机器上做apache + tomcat 的负载均衡:计算机apache上同时Apache+tomcat(tomcat1:192.168.19.199)和tomcat2(tomcat2:192.168.19.81)在tomcat1上安装apache + jdk + tomcat + tomcat-connectors ,在tomcat2上安装jdk+tomcat;tomcat1做均衡并提供服务;tomcat1上apache网页文件目录和tomcat网页文件目录要指向同一个目录
一、测试环境及软件安装:
linux 2.6 内核centos 5.2
本例二台tomcat 不在同一机器
先安装了所需的程序库,因服务器只提供apache+tomcat服务,所以只
安装gcc
yum -y install gcc
下载源码包:
apache2 和tomcat5都可以在bcf07c8fcc22bcd126ff0c1f
tomcat5需要JDK1.5的版本。
JK本文用的源码包tomcat-connectors
Apache 安装:
# tar zxvf httpd-2.2.11.tar.gz
#cd httpd-2.2.11
# ./configure --prefix=/usr/local/apache2 --enable-modules=so --enable-so # make && make install
/usr/local/apache2/bin/apachectrl start
看到apache就配置成功了
JDK的安装
#chmod 755 jdk-1_5_0_17-linux-i586.bin
#./jdk-1_5_0_17-linux-i586.bin
# mv jdk-1_5_0_17 /usr/local/
到此JDK已经安装完成
到/usr/bin目录下,把原用的java,javac文件删除:
#rm -rf java
#rm –rf javac
在/usr/bin 下建立软连接java
# ln -s /usr/local/jdk-1_5_0_17/bin/java /usr/bin/java
# ln -s /usr/local/jdk-1_5_0_17/bin/javac /usr/bin/javac
# java –version
# javac -version
java version "1.4.2_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03) Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)
为了方便下在的工作建立两个软链接:
ln -s /usr/local/jdk-1_5_0_17 /usr/local/jdk
ln -s /usr/local/jdk-1_5_0_17/jre /usr/local/jre
Tomcat的安装
#tar -zxvf apache-tomcat-6.0.18.tar.gz
# mv apache-tomcat-6.0.18 /usr/local/tomcat
设置环境变量: vim /etc/rc.d/rc.local,以追加的形式添加如下内容JAVA_HOME=/usr/local/jdk
export JAVA_HOME
JRE_HOME=/usr/local/jre
export JRE_HOME
CLASSPATH=/usr/local/tomcat/common/lib/:/usr/local/jdk/lib:/usr/local/jre /lib
export CLASSPATH
PATH=$PATH:/usr/local/tomcat/bin/:/usr/local/apache/bin:/usr/local/jdk/bi n:/usr/local/jre/bin
export PATH
TOMCAT_HOME=/usr/local/tomcat
export TOMCAT_HOME
启动tomcat以检查是否存在错误:
#cd /usr/local/tomcat/bin
#./startup.sh
IP地址:8080 可以看到猫头:)成功了。
在另一台机器上也安装tomcat 并配置好。
JK 安装(整合apache tomcat)
# tar zxvf tomcat-connectors-1.2.27-src.tar.gz
#cd tomcat-connectors-1.2.27-src/native
# ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-java-home=/usr/local/jdk
# make && make install
在/usr/local/apache2/modules/ 下会产生mod_jk.so
修改apache配置文件:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile /usr/local/tomcat/conf/jk/workers.properties JK配置文件负载的配置
JkLogFile /usr/local/tomcat/logs/mod_jk.log 相关日志的设置JkLogLevel info 日志的级别
JkMount /*.jsp controller 将jsp的请求转发给controller(负载均衡控制器)
修改DoucmentRoot 与tomcat的目录一致。
本文修改为:/usr/local/tomcat/webapps/
Options Indexes FollowSymLinks
AllowOverride none
Order allow,deny
Allow from all
即开放/usr/local/tomcat/webapps的权限,让允许所有人访问,我忽视了这个细节问题,浪费了二个下午,大家请注意这点,这步一定记得要做噢,tomcat1做到这步时,其实已经完成了apache+tomcat的整合,如果排障时可测试下直接输入192.168.19.199/test/print.jsp能不能直接运行jsp程度
二、调度器JK的配置
建立JK配置文件:
#vi /usr/local/tomcat/conf/jk/workers.properties
workers.java_home=/usr/local/jdk #指定jdk的目录
ps=/
worker.list=controller #指定负载名,这个可以随便起,与下面的worker.controller.type=lb要对应
#========tomcat1======== 第一台tomcat的配置
worker.tomcat1.port=8009
worker.tomcat1.host=localhost #这里也可以写IP
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1 #权量数值越大,分配的机率就最小
#========tomcat2===========
worker.tomcat2.port=8009
worker.tomcat2.host=192.168.19.81 (tomcat2的IP)
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
#========controller,负载均衡器=======
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2 # server.xml配置文件里的jvmRoute="tomcat1"指定的名字
worker.controller.sticky_session=1
注意事项:mcastAddr="224.0.0.1" 这主广播地址因此需要开启网卡组播功能
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0分别在各机器上运行,为了让服务器每次启动均生效,建议写入/etc/rc.d/rc.local
三、测试tomcat的负载均衡
tomcat1:在webapps 下新建test 目录
目录下建WEB-INF目录,再建web.xml文件
xmlns:xsi="bcf07c8fcc22bcd126ff0c1f/2001/XMLSchema-instance" xsi:schemaLocation="bcf07c8fcc22bcd126ff0c1f/xml/ns/j2ee bcf07c8fcc22bcd126ff0c1f/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
再在webapps 下建立print.jsp test.jsp
Print.jsp :
hello!IP[192.168.19.199]The time is <%= new java.util.Date() %>
tomcat2上操作一样,为了看负载均衡效果,记得将IP改为192.168.19.81,这样测试时就是二个不同的主机,至于目录和文件为什么要这样设置,不懂的同学可参考我的另一篇文章Tomcat基本配置详细说明(以tomcat5.5为例)
测试tomcat1和tomcat2上的tomcat时,用
192.168.19.199:8080/test/print.jsp&192.168.19.81:8080/test/ print.jsp,如果能正常显示猫猫,说明tomcat正常
最终测试,输入192.168.19.199/test/print.jsp时输入二次,应该显示二个不同的jps主页,这说明tomcat的负载均衡成功!
PS:这仅仅是实验环境的一个tomcat负载均衡的实验,没做过压力测试,仅供大家学习参考,大家要做生产环境时还要考虑很多因素,慎。

