- 论坛徽章:
- 0
|
本文由foway完成于2007年.欢迎转载,但请保留本文连接.谢谢.
所谓动静分离技术,是互联网上常用的一种优化技术。将变化不频繁的资料如图片文件称为静态;将时常变化资料如通过JDBC/ODBC等驱动程序调用数据库的动作称为动态。动态一般是不能被squid缓存下来的,静态的是可以被squid缓存的。
如果将静态的资料由处理静态文件速度快的apache等服务器来执行,动态的资料由j2ee服务器来执行,如此速度就会快很多了。所以J2EE服务器优化除了j2ee本身服务配置参数调整之外还需要跟apache集成。
那么有没有办法实现呢?
每个j2ee产品都支持动静分离技术:主要是跟apache协同实现的。如jboss/tomcat 利用mod_jk.so模块与apache协同工作来实现动静分离;weblogic通过mod_wl_2.so模块与apache协同工作来实现动静分离.
Mod_JK 动静分离技术
mod_jk.so的动态加载到apache是需要指令apxs的,由于RHEL5中自带apache2没有apxs,所以我们需要重新编译一个apache.
假设下载的软件在:
http://apache.mirror.phpchina.co ... s-1.2.26-src.tar.gz
http://java.sun.com/javase/downloads/index_jdk5.jsp
http://apache.mirror.phpchina.co ... omcat-5.5.26.tar.gz
http://apache.mirror.phpchina.com/httpd/httpd-2.2.8.tar.gz
http://downloads.sourceforge.net ... 094131&big_mirror=1
[root@foway ~]#ls /var/ftp/pub/download
httpd-2.2.8.tar.gz
tomcat-connectors-1.2.26-src.tar.gz
[root@foway ~]#cd /var/ftp/pub/download
[root@foway ~]#tar xzvf httpd-2.2.8.tar.gz
[root@foway ~]#tar xzvf tomcat-connectors-1.2.26-src.tar.gz
[root@foway ~]#cd httpd-2.2.8
[root@foway ~]#./configure \
--prefix=/usr/local/apache2 --enable-so --enable-ssl
[root@foway ~]#make&&make install
[root@foway ~]#cd ../tomcat-connectors-1.2.26-src/native
[root@foway ~]#./configure \
--with-apxs=/usr/local/apache2/bin/apxs
[root@foway ~]#make&&make install
[root@foway ~]# ls /usr/local/apache2/modules/
httpd.exp mod_jk.so
当看到mod_jk.so在apache模块目录下时,则编译的mod_jk已成功.
下面是配置mod_jk了.
[root@foway ~]#echo “Include conf/extra/mod_jk.conf” >>/usr/local/apache2/conf/httpd.conf
[root@foway ~]#cd /usr/local/apache2/conf/extra
编辑如下内容到mod_jk.conf文件中
[root@foway ~]#vi mod_jk.conf
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers2.properties
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkMount /* loadbalancer#apache will serve the static picture.
JkUnMount /*.jpg loadbalancer
JkUnMount /*.gif loadbalancer
JkUnMount /*.swf loadbalancer
JkUnMount /*.bmp loadbalancer
JkUnMount /*.png loadbalancer
保存退出.
[root@foway ~]# cd /usr/local/apache2/conf
编辑如下内容到workers2.properties文件中
[root@foway ~]#vi workers2.properties
worker.list=loadbalancer
#set properties for loadbalancer (ajp13)
worker. loadbalancer.type=ajp13
worker. loadbalancer.host=localhost
worker. loadbalancer.port=8009
worker. loadbalancer .lbfactor=1
#worker. loadbalancer.cachesize=10
#worker. loadbalancer.cache_timeout=600
worker. loadbalancer.socket_keepalive=1
#worker. loadbalancer.reclycle_timeout=300
保存退出.
[root@foway ~]#
cp /home/tomcat-connectors-1.2.26-src/conf/uriworkermap.properties ./
[root@foway ~]#/etc/init.d/httpd stop
[root@foway ~]#/usr/local/apache2/bin/apachectl start
到此mod_jk配置已完成.下面是配置j2ee服务器了:tomcat/jboss
Tomcat:
[root@foway ~]#ls /home/jdk*
/home/jdk-1_5_0_07-linux-i586-rpm.bin
[root@foway ~]#/home/ jdk-1_5_0_07-linux-i586-rpm.bin
按照提示安装即可
[root@foway ~]#ls /usr/java/
jdk1.5.0_07
这个是jdk1.5.0_07的rpm安装后的jdk所在路径.
[root@foway ~]#ls /home/apache-tomcat-5.5.26.tar.gz
/home/apache-tomcat-5.5.26.tar.gz
[root@foway ~]#cd /home;tar xzvf apache-tomcat-5.5.26.tar.gz
[root@foway ~]#mv /home/apache-tomcat-5.5.26 /var/tomcat5
[root@foway ~]#head /var/tomcat5/bin/startup.sh
#!/bin/sh
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
#
# $Id: startup.sh 385888 2006-03-14 21:04:40Z keith $
# -----------------------------------------------------------------------------
export JAVA_HOME=/usr/java/jdk1.5.0_07
# Better OS/400 detection: see Bugzilla 31132
红色部分就是需要你添加到startup.sh中的内容,其他默认不改变.
添加完成后:
[root@foway ~]#/var/tomcat5/bin/startup.sh
Using CATALINA_BASE: /var/tomcat5
Using CATALINA_HOME: /var/tomcat5
Using CATALINA_TMPDIR: /var/tomcat5/temp
Using JRE_HOME: /usr/java/jdk1.5.0_07
好,看到这个信息则tomcat安装已成功了.
测试:
图形界面中打开mozilla访问:
http://127.0.0.1
即可看到与http://127.0.0.1:8080看到的一样的内容.
恭喜你:apache+mod_jk+tomcat动静分离已实现了.
Jboss:
[root@foway ~]#ls /home/jboss*
/home/jboss-4.2.2.GA.zip
[root@foway ~]#cd /home;unzip jboss-4.2.2.GA.zip
[root@foway ~]#mv jboss-4.2.2.GA /var/jboss4
[root@foway ~]#head /var/jboss4/bin/run.sh
#!/bin/sh
### ====================================================================== ###
## ##
## JBoss Bootstrap Script ##
## ##
### ====================================================================== ###
export JAVA_HOME=/usr/java/jdk1.5.0_07
### $Id: run.sh 64199 2007-07-23 15:57:38Z cazzius $ ###
DIRNAME=`dirname $0`
红色部分就是需要你添加到run.sh中的内容,其他默认不改变.
添加完成后:
先关闭tomcat服务,然后启动jboss服务
[root@foway ~]#head /var/tomcat5/bin/shutdown.sh
#!/bin/sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
#
# $Id: shutdown.sh 385888 2006-03-14 21:04:40Z keith $
# -----------------------------------------------------------------------------
export JAVA_HOME=/usr/java/jdk1.5.0_07
# resolve links - $0 may be a softlink
PRG="$0"
确认有红色部分在shutdown.sh中后执行
[root@foway ~]# /var/tomcat5/bin/shutdown.sh
[root@foway ~]#/var/jboss4/bin/run.sh start
当看到如下信息
14:00:13,775 INFO [Http11Protocol] Starting Coyote HTTP/1.1 on http-127.0.0.1-8080
14:00:15,336 INFO [AjpProtocol] Starting Coyote AJP/1.3 on ajp-127.0.0.1-8009
14:00:15,424 INFO [Server] JBoss (MX MicroKernel) [4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)] Started in 2m:58s:65ms
表示jboss已经启动起来了.
测试: 图形界面中打开mozilla访问:
http://127.0.0.1
即可看到与http://127.0.0.1:8080看到的一样的内容.
恭喜你:apache+mod_jk+jboss动静分离已实现了.
上面的都是在单机上实现的,也就是说还没有做j2ee集群,如果是j2ee集群,mod_jk.so又该如何配置呢?
Mod_jk动静分离集群配置:
要实现集群,首先要规划好集群成员,与调度服务器,假设我们已刚才所配置的单机为母机,新增2台服务器作为运行j2ee程序的成员. 除此之外我们首选jboss作为jsp程序的解析中间件服务器.
那么我们目前需要对新的2台按照母机一样的配置apache+mod_jk+jboss了.
配置完成后每个j2ee成员只需要修改一个文件: workers2.properties即可.
假设3台的主机为:stu10.uplooking.com stu11.uplooking.com stu12.uplooking.com
那么修改3台主机中的workers2.properties文件为如下内容:
[root@foway ~]#cat /usr/local/apache2/conf/workers2.properties
worker.list=loadbalancer,server10,server11,server12
# Define the first node...
worker.server10.port=8009
worker.server10.host=192.168.0.10
worker.server10.type=ajp13
worker.server10.lbfactor=1
#worker.server10.local_worker=1
worker.server10.cachesize=100
# Define the 2nd node...
worker.server11.port=8009
worker.server11.host=192.168.0.11
worker.server11.type=ajp13
worker.server11.lbfactor=1
#worker.server11.local_worker=1
worker.server11.cachesize=100
# Define the 3nd node...
worker.server12.port=8009
worker.server12.host=192.168.0.12
worker.server12.type=ajp13
worker.server12.lbfactor=1
#worker.server12.local_worker=1
worker.server12.cachesize=100
# Now we define the load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=server10,server11,server12
worker.loadbalancer.sticky_session=1
修改完成后就可以启动集群了,操作如下:
分别在3台上启动httpd服务
Stu10:
[root@foway ~]#/usr/local/apache2/bin/apachectl start
Stu11:
[root@foway ~]#/usr/local/apache2/bin/apachectl start
Stu12:
[root@foway ~]#/usr/local/apache2/bin/apachectl start
分别在3台上启动jboss集群服务:
Stu10:
[root@foway ~]#/var/jboss4/bin/run.sh –c all
Stu11:
[root@foway ~]#/var/jboss4/bin/run.sh –c all
Stu12:
[root@foway ~]#/var/jboss4/bin/run.sh –c all
测试:
在可以访问到stu10-stu12的电脑上:
访问如下网址:
http://stu10.uplooking.com
http://stu11.uplooking.com
http://stu12.uplooking.com
看到的都是jboss的欢迎页面
在测试:
关闭stu10上的jboss服务后
在可以访问到stu10-stu12的电脑上:
访问如下网址:
http://stu10.uplooking.com
http://stu11.uplooking.com
http://stu12.uplooking.com
看到的都是jboss的欢迎页面
关闭stu11上的jboss服务后
在可以访问到stu10-stu12的电脑上:
访问如下网址:
http://stu10.uplooking.com
http://stu11.uplooking.com
http://stu12.uplooking.com
看到的都是jboss的欢迎页面
一定要仔细测试只要有一个jboss服务在运行,3台电脑上的http://ip:80看到的都是jboss的欢迎页面则恭喜你:mod_jk动静分离集群ajp协议层配置已成功了.下面是对http协议做集群处理了:
http协议的集群可以采用lvs或haproxy或mod_proxy_http或F5等来实现.
到此一个完整的apache+jboss的集群全部配置好了.
当然在实际的生产应用中,你还需要将apache的
”DocumentRoot” 指定的目录
与jboss中的j2ee程序工作目录相一致.以方便程序与图片的布局,同时也方便程序员调试.
注意:
在集群默认的jboss4.2.2.GA的j2ee程序工作目录:
/var/jboss4/server/all/deply/jboss-web.delpoyer/ROOT.war/
注意:本文操作都是在RHEL5.2上.如果在RHEL4上操作可能你需要将httpd的版本改用2.0的版本。 |
|