linux下apache负载均衡和jboss4集群

linux下apache负载均衡和jboss4集群
操作系统:RedHat AS 4 32bit Update 4
所需软件包:
Apache所用包:httpd-2.2.4.tar.gz
Jboss 所用包:jboss-4.0.2(windows与linux版本兼容)
JDK 所用包:jdk-6u10-beta-linux-i586-rpm.bin
整合所需包:tomcat-connectors-1.2.26-src.tar.gz

1安装JDK

sh jdk-6u2-linux-i586-rpm.bin

看到安装程序在询问您是否尊守许可协议页面 ,回车,空格都可以,看完协议.

出现一行字:Do you aggree to the above license terms? [yes or no]

安装程序在问您是否愿意遵守刚才看过的许可协议。当然要同意了,输入"y" 或 "yes" 回车。

在命令行输入:

vi /etc/profile

在里面添加如下内容

export JAVA_HOME=/usr/java/jdk1.6.0_10
export JAVA_BIN=/usr/java/jdk1.6.0_10/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

进入 /usr/bin/目录

cd /usr/bin
ln -s -f /usr/java/jdk1.6.0_02/jre/bin/java
ln -s -f /usr/java/jdk1.6.0_02/bin/javac

在命令行输入

java -version

屏幕输出:

java version "jdk1.6.0_10"
Java(TM) 2 Runtime Environment, Standard Edition (build jdk1.6.0_10)
Java HotSpot(TM) Client VM (build jdk1.6.0_10, mixed mode)

JDK1.6安装完毕.

2.安装Jboss

将Windows版本拷贝到linux目录,此文拷贝到/opt/jboss,安装Linux版本请参考网上资料。

3.安装Apache

tar –zxvf httpd-2.2.4.tar.gz
cd httpd-2.2.4
./configure-- prefix=/usr/local/termite/apache --enable-so --enable-vhost-alias --enable-rewrite --enable-deflate --enable-mods-shared=all --with-mpm=worker
make
make install
注:采用worker模式,没有原来的256进程限制。
根据实际情况,设置好Web端口、默认语言编码、默认页、虚拟目录等

4.安装tomcat-connectors-1.2.26-src.tar.gz

tar zxvf tomcat-connectors-1.2.26-src.tar.gz
cd tomcat-connectors-1.2.26-src
cd native
./configure --with-apxs=/usr/local/termite/apache/bin/apxs --with-java-home=/usr/java/jdk1.6.0_10 --with-java-platform=2 --enable-jni
make
cp apache-2.0/mod_jk.so /usr/local/termite/apache/modules/

注:如果此处的mod_jk.so是通过其它方法或者途径得到的,在后面启动apache的时候可能会提示:Cannot load /usr/local/termite/apache/modules/mod_jk.so into server: /usr/local/termite/apache/modules/mod_jk.so: invalid ELF header
file mod_jk.so 可能会显示 mod_jk.so: MS-DOS executable (EXE), OS/2 or MS Windows
而正确的应该显示mod_jk.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped

cd /usr/local/termite/apache/modules
chmod 755 mod_jk.so

5.Apache配置

修改/usr/local/termite/apache/conf/httpd.conf
将ServerName前#去掉,改为ServerName 127.0.0.1:8080
本例使用端口8080,修改Apache端口为8080,将Listen 80改成Listen 8080
末尾增加:Include conf/mod_jk.conf
在/usr/local/termite/apache/conf建立空文件mod_jk.conf,添加内容为:
# Load mod_jk module. Specify the filename
# of the mod_jk lib youve downloaded and
# installed in the previous section
#mod_jk
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# Where to put jk logs
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 /*.html loadbalancer
#JkUnMount /*.jpg loadbalancer
#JkUnMount /*.gif loadbalancer
#JkUnMount /*.swf loadbalancer
#JkUnMount /*.bmp loadbalancer
#JkUnMount /*.png loadbalancer

#Lookupon10
HostnameLookups Off
其中JkMount参数/*,表示此url请求转发到jboss集群处理,JkUnMount参数表示请求不转发,通常为静态请求,静态文件默认保存在/usr/local/termite/apache/htdocs目录
在/usr/local/termite/apache/conf建立空文件workers.propertie,增加以下内容:
worker.list=loadbalancer
# Define the first node...
worker.node1.port=8009
worker.node1.host=192.168.1.2
worker.node1.type=ajp13
worker.node1.lbfactor=1
worker.node1.local_worker=1
worker.node1.cachesize=1000
worker.node1.cache_timeout=600
worker.node1.socket_keepalive=1
worker.node1.socket_timeout=0
worker.node1.retries=3

# Define the second node...
worker.node2.port=8009
worker.node2.host=192.168.1.3
worker.node2.type=ajp13
worker.node2.lbfactor=1
worker.node2.local_worker=1
worker.node2.cachesize=1000
worker.node2.cache_timeout=600
worker.node2.socket_keepalive=1
worker.node2.socket_timeout=0
worker.node2.retries=3

# Now we define the load-balanc33ing behaviour
worker.loadbalancer.type=lb
worker.retries=3
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=1
#worker.loadbalancer.sticky_session_force=false

其中worker.node1.host中,node1代表节点名,host值为节点IP, 如果有更多节点,顺序定义更多的node段,并在worker.loadbalancer.balance_workers后全部列出,lbfactor 是负载分配权重,值越大分配的负载越多。worker.loadbalancer.sticky_session,设置为1使用粘着session,设置为0不使用粘着session。如果sticky_session设为true时,建议sticky_session_force也设为false,此参数表明如果集群中某台服务器在多次请求没有响应后,是否将当前的请求,转发到其它服务器上处理;sticky_session=true时,影响比较大,会导致转发到其它服务器上的请求,找不到原来的session,所以如果此时请求中有读取session中某些信息的话,就会导致应用的null异常。

sticky_session sticky_session_force 含义
true false SESSION会复制,有粘性
true true SESSION不复制,有粘性
false false SESSION会复制,无粘性
false true SESSION会复制,无粘性
启动Apache服务:
/usr/local/termite/apache/bin/apachectl start
6.配置各jboss节点
如果是以./run.sh -c all 来启动jboss服务,则默认是将cluster服务启动,无需做什么配置工作,只需确认相关文件是否存在即可。
确认…/server/all/deploy/下存在cluster-service.xml文件;
确认…/server/all/lib/下存在jgroups.jar文件,如果没有则重新安装jboss。
如果应用程序部署在default配置下,则需将上述的两个文件分别拷入…/server/default/deploy/、…/server /default/lib/目录下,直接双击…/bin/run.sh在终端中运行即可,或进入bin目录用./run.sh命令启动。
修改配置。本例中,提供服务的监听端口是8888,请根据实际情况修改。
vi /opt/jboss/server/default/deploy/jbossweb-tomcat55.sar/server.xml
找到<Engine name="jboss.web" defaultHost="localhost">,修改为<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">
注意,jvmRoute是节点号,各节点的要与在apache的workers.properties中的定义相对应。
vi /opt/jboss/server/default/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml找到UseJK,改为true。


7.分布式热部署(distributable hot deploy)

其实,APACHE已经帮WEB开发者考虑到在CLUSTER环境下的部署应用问題,当CLUSTER环境下的所有JBOSS是以-c all的方式来启动的,那么將自动支持分布式热部署,对于WEB开发者而言,只要将支持cluster的应用,打包成EAR,WAR或SAR文件,放到%jboss%serverall arm下,那么处于同一CLUSTER中的其他节点会自动下载并且部署,JBOSS把这个称为Farm deploy。
这里有两点是需要注意的:(1)JBOSS的分布式热部署功能是在JBOSS启动后才有效,也就是说,要在JBOSS启动后,将打包后的EAR,WAR或 SAR文件发布到%jboss%serverall arm,同一CLUSTER中的其他节点才会自动下载并且部署;(2)JBOSS的分布式热部署功能只针对文件有效,也就是說只有將WEB项目打包成文件,JBOSS才能辨别并且通知同一CLUSTER中的其他节点。


8.测试服务

apache和jboss4负载均衡配置完毕
启动apache和各节点jboss服务
Apache启动和停止:
/usr/local/termite/apache/bin/apachectl start
/usr/local/termite/apache/bin/apachectl stop
或在/usr/local/termite/apache/bin目录下执行./httpd –k start,./httpd –k stop
Jboss启动和停止:
进入/opt/jboss/bin目录
./run.sh
./shutdown.sh -S
在浏览器中打入apache服务IP:8080;如能显示jboss信息,说明服务成功启动。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值