JBoss安装,集群配置,负载均衡和session复制配置

 

 

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服务器的安装文档。

2

安装步骤可基本分为三大步骤:安装前准备,执行安装和基本配置等。安装前准备主要是检查客户的主机是否有足够的磁盘空间,是否需要用某个特殊用户安装等。执行安装主要是下载安装包并安装JBOSS。基本配置主要是根据客户的需要进行配置。

2.1

Unix操作系统环境下,安装前准备工作大致如下:下载安装文件,检查检查磁盘空间,创建用户和组,FTP上传文件和选择安装目录。

2.1.1

安装文件可以到Jboss 官方网站http://www.jboss.org/download/ 上直接下载。安装文件是完整的压缩包文件,后缀名为 .zip,但不包含JDKJDK需提前安装好。

2.1.2

在安装前先检查主机的磁盘是否有足够的空间。JBoss完全安装最多不会超过1G的空间,所以安装目录所在的逻辑卷需要大于1G。客户的应用程序运行时也需要使用一定的文件空间,根据总体考虑,以及以往客户的经验,建议一般Unix环境下安装目录逻辑卷空间设为20G左右,如果没有这么多空间,5G左右也是可以的,但此时如中间件及应用程序有大量日志产生时,会出现磁盘空间不足的错误。

Unix/Linux环境下查看逻辑卷空间的命令不同的操作系统有不同的命令。

l  HP Unix下,使用bdf命令

l  其它Unix/Linux下,使用df -k命令

这两个命令可以显示的所有目录剩余的磁盘空间,单位是Kbytes

2.1.3

因为root用户的权限太大,出于安全的需要,在重要系统的生产环境中,一般客户的维护人员不会给root用户的密码,而且也不建议用root用户来安装和启动JBOSS。一般是创建一个普通的用户和组。除非JBOSS需要运行监听在80端口,这种情况下,才需要用root用户启动JBOSS

一般建议客户的维护人员帮助创建一jboss的组和jboss的用户,jboss用户属于这个jboss组。因为创建用户需要root用户权限。创建组和用户的命令是:groupadduseradd。具体命令参数如下:

创建bea组:

#groupadd jboss

创建bea用户:

#useradd jboss-d /opt/jboss -g jboss

设置bea用户的密码

#passwd jboss

2.1.4 ftp上传文件

用上一步创建好的用户通过ftp上传文件。

注:从WindowsUnix上传安装文件时,必须是bin的二进制形式。在FTP命令行中输入bin命令,而上传license文本文件时,设置以文本形式上传,命令是asc

2.1.5

安装前准备的最后一步是选择安装目录。安装前与客户或集成商确定安装的目录。

2.2下载并安装JDK

下表是各个操作系统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

例:LinuxJDK安装。

下载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安装目录。

 

2.3安装JBOSS服务器

JBOSS安装 直接将压缩文件解压缩,然后配置JDK目录即可。

2.3.1

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 服务器。

到此,安装完成。

 

2.4服务器WEB集群配置

Jboss服务器WEB集群主要包含负载均衡 (load balance) 和状态同步(session replication)两个功能,它们是互相独立的,单独配置。

Jboss的负载均衡目前有两种方案,一是使用apachemod_jk,二是使用Jboss自带的负载均衡模块。

Jboss自带的负载均衡模块的缺点是负载能力相对不高,配置参数太少,比如无法指定不同节点的负载加权,所以这里主要介绍以mod_jk为例的配置方法。

 

2.4.1

首先在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安装完成

 

2.4.2

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即可。

2.4.3模块进行负载均衡配置

修改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

 

 

2.4.3 进行配置并与mod_jk协调工作

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>

 

到此为止,便可以用Apachemod_jk模块对客户端的请求进行负载均衡和session stickiness(即如果客户端第一次访问节点一,下一次请求mod_jk也将其转到节点一上)

 

 

2.4.4支持session复制功能

在前面已经配置了负载均衡和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>

 

2.4.5支持session复制功能

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>

 

 

 

你可能感兴趣的:(apache,jdk,jboss,负载均衡,集群,session)