1 概述
2 安装步骤
2.1 安装前准备
2.1.1 下载安装文件
2.1.2 检查磁盘空间
2.1.3 创建用户和组
2.1.4 FTP上传文件
2.1.5 选择安装目录
2.2 安装JDK
2.3 安装JBOSS 服务器
2.3.1 下载并安装JBOSS APPLICATION SERVER
2.4 JBOSS服务器WEB集群配置
2.4.1 下载并安装Appache Http Server
2.4.2 下载mod_jk
2.4.3 对mod_jk模块进行负载均衡配置
2.4.4 对Jboss进行配置并与mod_jk协调工作
2.4.5 配置Jboss支持session复制功能
1
本文档主要介绍了在Unix环境下JBoss服务器的安装文档。
安装步骤可基本分为三大步骤:安装前准备,执行安装和基本配置等。安装前准备主要是检查客户的主机是否有足够的磁盘空间,是否需要用某个特殊用户安装等。执行安装主要是下载安装包并安装JBOSS。基本配置主要是根据客户的需要进行配置。
在Unix操作系统环境下,安装前准备工作大致如下:下载安装文件,检查检查磁盘空间,创建用户和组,FTP上传文件和选择安装目录。
安装文件可以到Jboss 官方网站http://www.jboss.org/download/ 上直接下载。安装文件是完整的压缩包文件,后缀名为 .zip,但不包含JDK,JDK需提前安装好。
在安装前先检查主机的磁盘是否有足够的空间。JBoss完全安装最多不会超过1G的空间,所以安装目录所在的逻辑卷需要大于1G。客户的应用程序运行时也需要使用一定的文件空间,根据总体考虑,以及以往客户的经验,建议一般Unix环境下安装目录逻辑卷空间设为20G左右,如果没有这么多空间,5G左右也是可以的,但此时如中间件及应用程序有大量日志产生时,会出现磁盘空间不足的错误。
在Unix/Linux环境下查看逻辑卷空间的命令不同的操作系统有不同的命令。
l HP Unix下,使用bdf命令
l 其它Unix/Linux下,使用df -k命令
这两个命令可以显示的所有目录剩余的磁盘空间,单位是Kbytes。
因为root用户的权限太大,出于安全的需要,在重要系统的生产环境中,一般客户的维护人员不会给root用户的密码,而且也不建议用root用户来安装和启动JBOSS。一般是创建一个普通的用户和组。除非JBOSS需要运行监听在80端口,这种情况下,才需要用root用户启动JBOSS。
一般建议客户的维护人员帮助创建一jboss的组和jboss的用户,jboss用户属于这个jboss组。因为创建用户需要root用户权限。创建组和用户的命令是:groupadd和useradd。具体命令参数如下:
创建bea组: #groupadd jboss 创建bea用户: #useradd jboss-d /opt/jboss -g jboss 设置bea用户的密码 #passwd jboss |
用上一步创建好的用户通过ftp上传文件。
注:从Windows向Unix上传安装文件时,必须是bin的二进制形式。在FTP命令行中输入bin命令,而上传license文本文件时,设置以文本形式上传,命令是asc。
安装前准备的最后一步是选择安装目录。安装前与客户或集成商确定安装的目录。
下表是各个操作系统JDK下载的链接地址:
操作系统 |
链接地址 |
Sun JDK |
http://java.sun.com/javase/downloads/previous.jsp |
IBM JDK for AIX |
http://www.ibm.com/developerworks/java/jdk/aix/service.html |
BEA JRockit |
http://commerce.bea.com/products/weblogicjrockit/jrockit_prod_fam.jsp |
HP Unix JDK |
http://www.hp.com/products1/unix/java/java2/jdkjre5_0/index.html?jumpid=reg_R1002_USEN |
例:Linux上JDK安装。
下载jdk:
jdk-1_5_0_17-linux-i586.bin
chmod a+x jdk-1_5_0_17-linux-i586.bin
/ jdk-1_5_0_17-linux-i586.bin 等待,按提示安装jdk,假设安装在/opt目录下,客户自己可以定义jdk安装目录。
JBOSS安装 直接将压缩文件解压缩,然后配置JDK目录即可。
1)下载JBOSS APPLICATION SERVER安装介质。
http://www.jboss.org/download/
如:安装包 jboss-4.2.3.GA.zip
2)解压缩安装包。
如:unzip jboss-4.2.3.GA.zip
3)为JBOSS启动脚本设置 JAVA_HOME 环境变量。
进入JBOSS_HOME/bin目录下面,打开run.sh文件。
在文件的上面添加一行设置jdk目录的语句。
export JAVA_HOME=/opt/jdk1.5.0_17
让后运行run.sh 启动脚本便可启动JBOSS 服务器。
到此,安装完成。
Jboss服务器WEB集群主要包含负载均衡 (load balance) 和状态同步(session replication)两个功能,它们是互相独立的,单独配置。
Jboss的负载均衡目前有两种方案,一是使用apache的mod_jk,二是使用Jboss自带的负载均衡模块。
Jboss自带的负载均衡模块的缺点是负载能力相对不高,配置参数太少,比如无法指定不同节点的负载加权,所以这里主要介绍以mod_jk为例的配置方法。
首先在Apache网站http://httpd.apache.org,下载安装介质,不同操作系统介质也不同。
下面为CentOS release 4.4 Linux上的安装例子:
下载http-2.2.8.tar.bz2文件
tar –jxvf http-2.2.8.tar.bz2
cd http-2.2.8
./configure --prefix=/opt/jboss/apache228 --enable-mods-shared=all --enable-so
make
make install
Apache2.2.8安装完成
1,首先在Apache网站
http://www.apache.org/dist/jakarta/tomcat-connectors/jk/binaries
下载mod_jk.so
本例子中下载的版本为mod_jk-1.2.27-httpd-2.2.6.so
2,将mod_jk-1.2.27-httpd-2.2.6.so 改名为mod_jk.so并复制到目录/opt/jboss/apache228/modules即可。
修改APACHE_HOME/conf/httpd.conf文件,在最后一行加入
# 包含mod-jk模块的配置文件
Include conf/mod-jk.conf
创建并配置APACHE_HOME/conf/mod-jk.conf文件
# 装载 mod_jk 模块
LoadModule jk_module modules/mod_jk.so
# workers.properties文件所在目录
JkWorkersFile conf/workers.properties
# 设置jk日至文件
JkLogFile logs/mod_jk.log
# 设置jk日至级别 [debug/error/info]
JkLogLevel info
# 设置jk日至格式
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# 设置请求日至格式
JkRequestLogFormat "%w %V %T"
# 设置哪个URL请求转发到mod_jk处理
JkMount /application/* loadbalancer
# 加共享内存
JkShmFile logs/jk.shm
# 加jkstatus 功能,来管理运行时数据
<Location /jkstatus/>
JkMount status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
创建workers.properties文件,文件内容如下:
# 设置要转发的URL
worker.list=loadbalancer,status
# 设置节点1的属性
worker.node1.port=8009
worker.node1.host=1.192.1.100
worker.node1.type=ajp13
worker.node1.lbfactor=1
# 设置节点2的属性
worker.node2.port=8009
worker.node2.host= 1.192.1.200
worker.node2.type=ajp13
worker.node2.lbfactor=1
# 设置负载均衡测率
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=1
# 管理负载均衡的状态worker
worker.status.type=status
对Jboss进行配置并使其能够与mod_jk协调工作,主要有以下两个方面:
1,为集群中的每个节点设置jvmRoute属性,使其和workers.properties文件中的节点名相对应。
编辑JBOSS_HOME/server/all/deploy/jboss-web.deployer/server.xml
找到<Engine>属性并加入属性jvmRoute,例子如下:
<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">
……
</Engine>
2,在集群配置中,需要将UseJK属性的值设为true,这样配置是为了使集群中的每个实例知道mod_jk模块正在使用。
编辑
JBOSS_HOME
/server/all/deploy/jboss-web-cluster.sar/META-INF/jboss-service.xml文件
找到名字为UseJK 的属性,并将其值设为true,例子如下:
<attribute name="UseJK">true</attribute>
到此为止,便可以用Apache和mod_jk模块对客户端的请求进行负载均衡和session
stickiness(即如果客户端第一次访问节点一,下一次请求mod_jk也将其转到节点一上)。
在前面已经配置了负载均衡和session stickiness,但仍有一个问题,即当有一个节点异常退出,而原来在这个节点上客户端有了新请求时,这时session数据变丢失了。
为了解决这个问题,在集群中可以通过配置session复制来解决这个问题。
编辑
JBOSS_HOME/server/all/deploy/jboss-web-cluster.sar/META-INF/ jboss-service.xml文件。
例子如下:
<mbean code="org.jboss.cache.aop.TreeCacheAop"
name="jboss.cache:service=TomcatClusteringCache">
<depends>jboss:service=Naming</depends>
<depends>jboss:service=TransactionManager</depends>
<depends>jboss.aop:service=AspectDeployer</depends>
<attribute name="TransactionManagerLookupClass">
org.jboss.cache.BatchModeTransactionManagerLookup
</attribute>
<attribute name="IsolationLevel">REPEATABLE_READ</attribute>
<attribute name="CacheMode">REPL_ASYNC</attribute>
<attribute name="ClusterName">
Tomcat-${jboss.partition.name:Cluster}
</attribute>
<attribute name="UseMarshalling">false</attribute>
<attribute name="InactiveOnStartup">false</attribute>
<attribute name="ClusterConfig">
... ...
</attribute>
<attribute name="LockAcquisitionTimeout">15000</attribute>
<attribute name="SyncReplTimeout">20000</attribute>
</mbean>
Enable部署在集群中的Web应用Session复制功能:
修改Web应用web.xml文件,加入distributable元素。
<web-app version="2.4">
<distributable/>
<!-- ... -->
</web-app>
修改jboss-web.xml文件,例子如下。
<jboss-web>
<replication-config>
<replication-trigger>
SET_AND_NON_PRIMITIVE_GET
</replication-trigger>
<replication-granularity>
SESSION
</replication-granularity>
<replication-field-batch-mode>
True
</replication-field-batch-mode>
</replication-config>
</jboss-web>