这篇文章主要介绍“Jboss集群的安装配置”,在日常操作中,相信很多人在Jboss集群的安装配置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Jboss集群的安装配置”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

准备工作

两台PC服务器:

信息项

说明

ip地址XXX.XXX.1.59|XXX.XXX.1.63系统硬件平台PC Server内存6gCPUIntel(R) Xeon(TM) CPU 3.00GHz *6操作系统CentOS release 5.5 (Final)

安装介质 :


安装并配置JDK
下载JDK(版本为1.6)
安装

1)将jdk介质上传到目标服务器上(XXX.XXX.1.59),并赋上执行权限

[root@XXXHT3 jboss]# chmod +x jdk-6u29-linux-i586-rpm.bin-rwxr--r-- 1 root root 80671698 Apr 25 03:13 jdk-6u29-linux-i586-rpm.bin

1

2

[root@XXXHT3 jboss]# chmod +x jdk-6u29-linux-i586-rpm.bin

-rwxr--r-- 1 root root80671698 Apr 25 03:13 jdk-6u29-linux-i586-rpm.bin

2)输入以下命令开始安装

[root@XXXHT3 jboss]# ./jdk-6u29-linux-i586-rpm.bin[root@XXXHT3 jboss]# rpm -ivh jdk-6u29-linux-i586.rpm

1

2

[root@XXXHT3 jboss]# ./jdk-6u29-linux-i586-rpm.bin

[root@XXXHT3 jboss]# rpm -ivh jdk-6u29-linux-i586.rpm

3)确认jdk已经安装

[root@XXXHT3 jboss]# cd /usr/java/default/ jdk1.6.0_29/ latest/

1

2

[root@XXXHT3 jboss]# cd /usr/java/

default/ jdk1.6.0_29/ latest/

设置环境变量

1)找到用户家目录下的.bash_profile文件,在文件最后加入下面内容

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

1

2

3

4

JAVA_HOME=/usr/java/jdk1.6.0_29

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export PATH JAVA_HOME CLASSPATH

保存退出

注销系统重新登录或执行以下命令

[root@XXXHT3 ~]# . .bash_profile

1

[root@XXXHT3 ~]# . .bash_profile

2)安装成功后输入java –version 查看版本是否正确,显示以下信息则正确。

[root@XXXHT3 ~]# java -versionjava version "1.6.0_29"Java(TM) SE Runtime Environment (build 1.6.0_29-b11)Java HotSpot(TM) Server VM (build 20.4-b02, mixed mode)

1

2

3

4

[root@XXXHT3 ~]# java -version

java version "1.6.0_29"

Java(TM) SE Runtime Environment (build 1.6.0_29-b11)

Java HotSpot(TM) Server VM (build 20.4-b02, mixed mode)

安装并配置 JBoss 环境变量
下载JBoss(JBoss5的jdk6版本安装包)
安装JBoss

解压jboss介质文件

[root@XXXHT3 jboss]# unzip jboss-5.1.0.GA-jdk6.zip Archive: jboss-5.1.0.GA-jdk6.zip

1

2

[root@XXXHT3 jboss]# unzip jboss-5.1.0.GA-jdk6.zip

Archive:jboss-5.1.0.GA-jdk6.zip

3. 配置JBoss 环境变量

找到用户家目录下的.bash_profile文件,在文件最后加入下面内容

JBOSS_HOME=/data/jboss/jboss-5.1.0.GA PATH=$JBOSS_HOME/bin:$PATH export JBOSS_HOME PATH

1

2

3

JBOSS_HOME=/data/jboss/jboss-5.1.0.GA

PATH=$JBOSS_HOME/bin:$PATH

export JBOSS_HOME PATH

保存退出

注销系统重新登录或执行以下命令

[root@XXXHT3 ~]# . .bash_profile

1

[root@XXXHT3 ~]# . .bash_profile

Jboss集群负载均衡器配置
安装apache

1)下载apache(httpd-2.2.17)

2)解压

[root@XXXHT3 jboss]# tar -xvf httpd-2.2.17.tar.gz

1

[root@XXXHT3 jboss]# tar -xvf httpd-2.2.17.tar.gz

3)编译

进入解压后的apache目录,执行下面命令

[root@XXXHT3 httpd-2.2.17]# ./configure

1

[root@XXXHT3 httpd-2.2.17]# ./configure

4)然后依次输入:

make clean 回车make 回车make install 回车

1

2

3

make clean 回车

make 回车

make install 回车

5)确认apache安装目录

[root@XXXHT3 httpd-2.2.17]# cd /usr/local/apache2/[root@XXXHT3 apache2]# lsbin build cgi-bin conf error htdocs icons include lib logs man manual modules

1

2

3

[root@XXXHT3 httpd-2.2.17]# cd /usr/local/apache2/

[root@XXXHT3 apache2]# ls

binbuildcgi-binconferrorhtdocsiconsincludeliblogsmanmanualmodules

6)修改配置

打开 /usr/local/apache2/conf/httpd.conf文件

将Listen 80 改成Listen 7070

将User daemon和Group daemon 改为 User apache和Group apache

删除ServerName前的# 将该行改为 ServerName 127.0.0.1:8888

然后添加用户和用户组

在终端输入:

groupadd apacheuseradd apache –g apache

1

2

groupadd apache

useradd apache –g apache

apache mod_jk 的配置

1)下载mod_jk安装包

mod_jk下载地址

http://tomcat.apache.org/connectors-doc/

2)解压

[root@XXXHT3 jboss]# tar -xvf tomcat-connectors-1.2.40-src.tar.gz

1

[root@XXXHT3 jboss]# tar -xvf tomcat-connectors-1.2.40-src.tar.gz

3)编译安装

[root@XXXHT3 jboss]# cd tomcat-connectors-1.2.40-src[root@XXXHT3 tomcat-connectors-1.2.40-src]# cd native[root@XXXHT3 native]# ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-java-home=/usr/java/jdk1.6.0_29 --with-java-platform=2 --enable-jni[root@XXXHT3 native]# make[root@XXXHT3 native]# make install

1

2

3

4

5

[root@XXXHT3 jboss]# cd tomcat-connectors-1.2.40-src

[root@XXXHT3 tomcat-connectors-1.2.40-src]# cd native

[root@XXXHT3 native]# ./configure --with-apxs=/usr/local/apache2/bin/apxs--with-java-home=/usr/java/jdk1.6.0_29--with-java-platform=2--enable-jni

[root@XXXHT3 native]# make

[root@XXXHT3 native]# make install

4)拷贝mod_jk.so包到

[root@XXXHT3 native]# cd apache-2.0/[root@XXXHT3 apache-2.0]# cp ./mod_jk.so /usr/local/apache2/modules/ cd /usr/local/apache/modules/chmod 755 mod_jk.so

1

2

3

4

[root@XXXHT3 native]# cd apache-2.0/

[root@XXXHT3 apache-2.0]# cp ./mod_jk.so /usr/local/apache2/modules/

cd /usr/local/apache/modules/

chmod 755 mod_jk.so

5)在/usr/local/apache2/conf/httpd.conf的末尾增加:

Include conf/mod_jk.conf

1

Include conf/mod_jk.conf

6)建立文件/usr/local/apache2/conf/uriworkermap.properties并输入:

[root@XXXHT3 conf]# vi uriworkermap.properties/jmx-console=loadbalancer/jmx-console/*=loadbalancer/web-console=loadbalancer/web-console/*=loadbalancer

1

2

3

4

5

[root@XXXHT3 conf]# vi uriworkermap.properties

/jmx-console=loadbalancer

/jmx-console/*=loadbalancer

/web-console=loadbalancer

/web-console/*=loadbalancer

7)该目录下建立文件mod_jk.conf 并输入以下内容:

# Load mod_jk module. Specify the filename# of the mod_jk lib you’ve downloaded and# installed in the previous sectionLoadModule jk_module modules/mod_jk.so# Where to find workers.propertiesJkWorkersFile conf/workers.properties# Where to put jk logsJkLogFile logs/mod_jk.log# Set the jk log level [debug/error/info]JkLogLevel info# Select the log formatJkLogStampFormat "[%a %b %d %H:%M:%S %Y] "# JkOptions indicate to send SSL KEY SIZE,JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories# JkRequestLogFormat set the request formatJkRequestLogFormat "%w %V %T"JkMount /* loadbalancer

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# Load mod_jk module. Specify the filename

# of the mod_jk lib you’ve downloaded and

# installed in the previous section

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

8)该目录下建立文件workers.properties 并输入以下内容:

worker.list=loadbalancer,node1,node2# Define the first node...worker.node1.port=8009worker.node1.host=XXX.XXX.1.59worker.node1.type=ajp13worker.node1.lbfactor=1worker.node1.local_worker=1worker.node1.cachesize=10worker.node1.cache_timeout=600worker.node1.reply_timeout=100worker.node1.socket_timeout=300# Define the second node...worker.node2.port=8009worker.node2.host=XXX.XXX.1.63worker.node2.type=ajp13worker.node2.lbfactor=1worker.node2.local_worker=1worker.node2.cachesize=10worker.node2.cache_timeout=600worker.node2.reply_timeout=100worker.node2.socket_timeout=300# Now we define the load-balancing behaviourworker.loadbalancer.type=lbworker.loadbalancer.balanced_workers=node1,node2worker.loadbalancer.sticky_session=0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

worker.list=loadbalancer,node1,node2

# Define the first node...

worker.node1.port=8009

worker.node1.host=XXX.XXX.1.59

worker.node1.type=ajp13

worker.node1.lbfactor=1

worker.node1.local_worker=1

worker.node1.cachesize=10

worker.node1.cache_timeout=600

worker.node1.reply_timeout=100

worker.node1.socket_timeout=300

# Define the second node...

worker.node2.port=8009

worker.node2.host=XXX.XXX.1.63

worker.node2.type=ajp13

worker.node2.lbfactor=1

worker.node2.local_worker=1

worker.node2.cachesize=10

worker.node2.cache_timeout=600

worker.node2.reply_timeout=100

worker.node2.socket_timeout=300

# Now we define the load-balancing behaviour

worker.loadbalancer.type=lb

worker.loadbalancer.balanced_workers=node1,node2

worker.loadbalancer.sticky_session=

说明:

worker.node1.host、 worker.node2.host要改成jboss集群各机器的实际IP.

如果有更多的节点,顺序定义更多的 node段,并worker.loadbalancer.balanced_workers 后全部列出.

lbfactor是负载分配权重,值越大分配的负载越多.

worker.loadbalancer.sticky_session它是指session是否是黏着性session,如果是0则代表是非黏着性session,1代表粘连。

JBoss 集群节点配置

1)修改server.xml使它支持所有网络访问

[root@XXXHT3 deploy]# cd /data/jboss/jboss-5.1.0.GA/server/all/deploy/jbossweb.sar[root@XXXHT3 deploy]# vi server.xml

1

2

[root@XXXHT3 deploy]# cd /data/jboss/jboss-5.1.0.GA/server/all/deploy/jbossweb.sar

[root@XXXHT3 deploy]# vi server.xml

修改

<Connector port="8080" address="${jboss.bind.address}"

1

<Connector port="8080" address="${jboss.bind.address}"


<Connector port="8080" address="0.0.0.0" >

1

<Connector port="8080" address="0.0.0.0" >

修改

<Connector port="8009" address="${jboss.bind.address}" protocol="AJP/1.3"

1

<Connector port="8009" address="${jboss.bind.address}" protocol="AJP/1.3"


<Connector port="8009" address="0.0.0.0" protocol="AJP/1.3"

1

<Connector port="8009" address="0.0.0.0" protocol="AJP/1.3"

2)修改server.xml使它支持所有网络访问,使得JBoss知道自己为Node1结点

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1" >

1

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1" >

注意,jvmRoute是节点号,要与在 apache的 workers.properties中的定义相对应.

3)增加节点配置

[root@XXXHT3 deploy]# cd /data/ jboss/jboss-5.1.0.GA /server/all/deploy/cluster/jgroups-channelfactory.sar/META-INF[root@XXXHT3 deploy]# vi jgroups-channelfactory-stacks.xml

1

2

[root@XXXHT3 deploy]# cd /data/ jboss/jboss-5.1.0.GA /server/all/deploy/cluster/jgroups-channelfactory.sar/META-INF

[root@XXXHT3 deploy]# vi jgroups-channelfactory-stacks.xml

修改292行为

<TCPPING timeout="3000" initial_hosts="${XXX.XXX.1.59[7810], XXX.XXX.1. 63[7810]}" port_range="1"

1

2

3

<TCPPING timeout="3000"

initial_hosts="${XXX.XXX.1.59[7810], XXX.XXX.1. 63[7810]}"

port_range="1"

其中59是本机Node的ip地址,63是另一个机器Node的ip地址。端口7810是JBoss内定的。

修改374行为

<TCPPING timeout="3000" initial_hosts="${XXX.XXX.1.59[7810], XXX.XXX.1. 63[7810]}" port_range="1" num_initial_members="3"/>

1

2

3

4

<TCPPING timeout="3000"

initial_hosts="${XXX.XXX.1.59[7810], XXX.XXX.1. 63[7810]}"

port_range="1"

num_initial_members="3"/>

在另一台机器Node节点上,此文件修改如下

<TCPPING timeout="3000" initial_hosts="${XXX.XXX.1.63[7810], XXX.XXX.1.59[7810]}" port_range="1" num_initial_members="3"/>

1

2

3

4

<TCPPING timeout="3000"

initial_hosts="${XXX.XXX.1.63[7810], XXX.XXX.1.59[7810]}"

port_range="1"

num_initial_members="3"/>

相对于59机器,63就是ip地址进行了对换。

4)定义集群session共享级别(重要)

修改war-deployers-jboss-beans.xml文件,这个文件比较重要,它定义了集群session的共享级别。

[root@XXXHT3 deploy]# cd / data/jboss/jboss-5.1.0.GA/server/all/deployers/jbossweb.deployer/META-INF[root@XXXHT3 deploy]# vi war-deployers-jboss-beans.xml

1

2

[root@XXXHT3 deploy]# cd / data/jboss/jboss-5.1.0.GA/server/all/deployers/jbossweb.deployer/META-INF

[root@XXXHT3 deploy]# vi war-deployers-jboss-beans.xml

找到:

<property name=”useJK”>false</property>

//需要去掉旁边的注释<!– –>

改为:

<property name=”useJK”>true</property>

5)修改ssaging-service.xml文件

[root@XXXHT3 deploy]# cd /data/jboss/jboss-5.1.0.GA/server/all/deploy/messaging[root@XXXHT3 deploy]# vi messaging-service.xml

1

2

[root@XXXHT3 deploy]# cd /data/jboss/jboss-5.1.0.GA/server/all/deploy/messaging

[root@XXXHT3 deploy]# vi messaging-service.xml

修改20行

<attribute name="ServerPeerID">${jboss.messaging.ServerPeerID:1}</attribute>

1

<attribute name="ServerPeerID">${jboss.messaging.ServerPeerID:1}</attribute>

此时只要是整数值就可以

另一个机器配置

<attribute name="ServerPeerID">${jboss.messaging.ServerPeerID:2}</attribute>

1

<attribute name="ServerPeerID">${jboss.messaging.ServerPeerID:2}</attribute>

需要注意的就是同一个集群里不同Node的这个ID数值不能一致。

应用项目
war包里的web.xml文件

在自己的项目应用的war包中的web.xml加入下面一句话

<distributable/>

1

<distributable/>

将其放到最顶层,如下

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><distributable/> <welcome-file-list> <welcome-file>hello.jsp</welcome-file> </welcome-file-list></web-app>

1

2

3

4

5

6

7

8

9

10

11

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<distributable/>

<welcome-file-list>

<welcome-file>hello.jsp</welcome-file>

</welcome-file-list>

</web-app>

war包里的jboss-web.xml文件

在web.xml同一级文件夹下,加入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>

1

2

3

4

5

6

7

8

9

10

11

12

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

启动JBoss集群
启动负载均衡器apache

在/usr/local/apache2/bin目录下执行./httpd –k start (终止命令: ./httpd –k stop)

在/usr/local/apache2/logs/mod_jk.log 中,看到 apache初始化mod_jk的日志:

[Wed Aug 01 10:36:11 2007][6636:63168] [info] init_jk::mod_jk.c (2743):mod_jk/1.2.23 initialized[Wed Aug 01 10:36:11 2007][6637:63168] [info] init_jk::mod_jk.c (2743):mod_jk/1.2.23 initialized

1

2

3

4

5

6

7

[Wed Aug 01 10:36:11 2007][6636:63168] [info] init_jk::mod_jk.c (2743):

mod_jk/1.2.23 initialized

[Wed Aug 01 10:36:11 2007][6637:63168] [info] init_jk::mod_jk.c (2743):

mod_jk/1.2.23 initialized

后面如有错误信息,是因为集群中的节点尚未启动,暂时忽略。

用 netstat检查 7070监听端口存在,apache启动成功. (netstat -an | grep 7070)

启动JBoss节点

在${JBOSS_HOME}\bin下建立一个run-all.sh文件,(记住:一定要以配置IP的方式启动,Session赋值才有效)内容如下:

run.sh -c all -b XXX.XXX.1.59

1

run.sh -c all -b XXX.XXX.1.59

如果是63 Node机器,内容如下

run.sh -c all -b XXX.XXX.1.63

1

run.sh -c all -b XXX.XXX.1.63

终止命令:./shutdown.sh -S

用 netstat检查 8080端口监听存在.

用浏览器访问各节点的 8080端口,能够看到jboss的状态.

Jboss启动成功.

负载均衡及容灾测试

通过Hello World小应用,完成了以下集群负载及容灾测试:

设置非session粘连状态

测试场景

测试结果

是否通过

59、63两个JBoss节点状态正常请求会轮询的平均转发给两个节点通过59节点宕掉,63节点正常请求转发到63节点,能正常返回通过63节点宕掉,59节点正常请求转发到59节点,能正常返回通过宕掉的其中一个节点重新启动请求会轮询的平均转发给两个节点通过设置session粘连状态

测试场景

测试结果

是否通过

59、63两个JBoss节点状态正常请求只转发给1个节点通过59节点宕掉,63节点正常请求转发到63节点,能正常返回通过63节点宕掉,59节点正常请求转发到59节点,能正常返回通过宕掉的其中一个节点重新启动请求只转发给原来正常的节点通过JBoss与WebLogic产品比较

JBoss

WebLogic

软件费用开源软件,免费商业软件,收费版本升级版本跨度大,需要修改源代码升级方便,基本不需要修改集群安装部署比较复杂简单集群扩展比较简单简单管理每个节点进行管理所有节点同一个控制台统一管理热部署支持,但要每个节点进行部署支持而且更稳定,一次性部署整个集群适用对象中小型应用项目企业级开发大项目稳定性一般稳定性更高技术支持无提供专业技术支持

到此,关于“Jboss集群的安装配置”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!