1.1 应用软件
软件
|
版本
|
介质包
|
所属
|
对应操作系统
|
JBoss
|
|
jboss-
|
Redhat
|
Linux
,Windows
|
JDK
|
|
j2sdk-1_4_2_16- linux-i586.bin |
Sun
|
Linux
(IA64硬件除外)
|
注:1. IA64的硬件需要IA64版本的JDK。
※
在linux下,JDK为j2sdk-1_4_2_16-linux-ia64.bin;
※
在Windows下,JDK为j2sdk-1_4_2_16-windows-ia64.exe。
2. JBoss
可以运行在任何支持JAVA的平台上。
1.2 Linux下的命令
1.2.1 常用的vi文本编辑器命令
命令
|
操作的含义
|
vi
文件名
|
打开对应的文件
|
a
|
从命令模式切换到输入模式
|
Esc
|
输入模式切换到命令模式
|
:
|
末行模式(esc之后,在此时可以输入命令)
|
:w
|
保存
|
:wq
|
保存并退出
|
:q!
|
不保存强制退出
|
:wq!
|
保存并强制退出
|
:set nu
|
显示行号
|
:
数字
|
定位到数字所在的行
|
1.2.2 安装过程中用到的Linux命令
命令
|
操作的含义
|
ssh IP
|
登录一台Linux系统的计算机并进行操作
|
groupadd
|
创建用户组
|
useradd
–g 组名 用户名
|
创建用户到组
|
passwd
用户名
|
为新用户创建密码
|
exit
|
退出当前命令窗口
|
chmod XXX
文件名
|
修改文件权限
|
ls
|
查看当前目录下的文件
|
unzip
|
解压zip格式的压缩包
|
1.2.3 使用的省略词含义
命令
2 安装与环境配置
2.1 创建jboss用户
[root@node1 ~]# useradd jboss
[root@node1 ~]# passwd jboss
Changing password for user jboss.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@node1 ~]#exit
[root@node1 ~]# passwd jboss
Changing password for user jboss.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@node1 ~]#exit
2.2 使用jboss用户登录系统
Type `help' to learn how to use Xshell prompt.
Xshell:\> ssh 192.168.200.151
Xshell:\> ssh 192.168.200.151
2.3 使用jboss用户上传软件
u 查看上传文件结果:
[jboss@node1 ~]$ ls
jdk-1_5_0_14-linux-i586.bin jboss-4.0.5.GA.zip
jdk-1_5_0_14-linux-i586.bin jboss-4.0.5.GA.zip
2.4 安装JDK
修改JDK文件的权限,使其执行,并安装(ctrl+c跳过版本说明,键入yes进行jdk安装)
[jboss@node1 ~]$ chmod 755 jdk-1_5_0_14-linux-i586.bin
[jboss@node1 ~]$ ./jdk-1_5_0_14-linux-i586.bin
[jboss@node1 ~]$ ./jdk-1_5_0_14-linux-i586.bin
2.5 安装JBoss
[jboss@node1 ~]$ unzip jboss-4.0.5.GA.zip
[jboss@node1 ~]$ vi JBOSS_HOME/bin/run.conf
[jboss@node1 ~]$ vi JBOSS_HOME/bin/run.conf
添加JAVA_HOME,查找并将红色一行
30 # be defined to $JAVA_HOME/bin/java, else $JAVA will be "java".
31 #
32 #JAVA_HOME="/opt/java/jdk"
31 #
32 #JAVA_HOME="/opt/java/jdk"
替换成
30 # be defined to $JAVA_HOME/bin/java, else $JAVA will be "java".
31 #
32 JAVA_HOME="/home/jboss/jdk1.5.0_14" //你的JDK安装路径
31 #
32 JAVA_HOME="/home/jboss/jdk1.5.0_14" //你的JDK安装路径
使用":wq"保存退出
2.6 JBoss的启动和关闭
窗口启动方式及后台启动方式(事实上,这种启动是默认执行了一个启动参数run.sh -c default,在JBOSS_HOME/server/中,有jboss的三种配置:all,default,minimal。你也可以自己复制其中的文件夹,命名为自己的服务,如:myserver,启动的时候只需要run.sh -c myserver就行了。):
[jboss@node1 ~]$ JBOSS_HOME/bin/run.sh //启动后此窗口不能再做他用
[jboss@node1 ~]$ JBOSS_HOME/bin/run.sh & //启动后此窗口还可继续进行其他操作
[jboss@node1 ~]$ JBOSS_HOME/bin/run.sh & //启动后此窗口还可继续进行其他操作
窗口启动方式及后台启动方式的关闭:
窗口启动方式的,在此窗口直接按“Ctrl+C”就行了
[jboss@node1 ~]$ JBOSS_HOME/bin/shutdown.sh -S //后台启动方式的关闭
注意:上面所说的JBoss4.0.5.GA的运行与关闭方式,由于JBoss的后续版本(4.2.0GA+)做了安全修改,不像JBoss4.0.5.GA那样,默认就是启动了全局暴露(就是外IP都可以访问),而是需要增加一个启动参数,才能被外IP访问,因此启动命令变成:
[jboss@node1 ~]$ JBOSS_HOME/bin/run.sh -b 你的IP地址 //暴露此IP上的jboss服务,如果一个机器上有2以上的ip呢?如下命令,暴露所有ip上的jboss服务
[jboss@node1 ~]$ JBOSS_HOME/bin/run.sh -b 0.0.0.0
随之关闭命名也就变成:
[jboss@node1 ~]$ JBOSS_HOME/bin/shutdown.sh -S -s 你的IP地址
3 JBoss集群安装
3.1 Apache安装
3.1.1 使用Redhat系统自带的apache服务(建议使用)
启动:
[root@node1 ~]$
service httpd start
关闭:
[root@node1 ~]$ service httpd stop
重新启动:
[root@node1 ~]$ service httpd restart
状态:
[root@node1 ~]$ service httpd status
设置随系统启动:
[root@node1 ~]$ chkconfig –level 345 httpd on
3.1.2 自己安装Apache
[root@node1 ~]$ tar zxvf httpd-2.0.54.tar.gz //解压
[root@node1 ~]$cd httpd-2.0.54
[root@node1 httpd-2.0.54]$./configure --enable-MODULE=shared --enable-so --with-mpm=worker –prefix=PREFIX //编译
[root@node1 httpd-2.0.54]$ make
[root@node1 httpd-2.0.54]$ make install
[root@node1 ~]$cd httpd-2.0.54
[root@node1 httpd-2.0.54]$./configure --enable-MODULE=shared --enable-so --with-mpm=worker –prefix=PREFIX //编译
[root@node1 httpd-2.0.54]$ make
[root@node1 httpd-2.0.54]$ make install
注:PREFIX为Apache指定的安装路径。默认的路径的为/usr/local/apache2
(本人对Apache也不熟悉,但这样基本上可以正常工作了)
3.2 mod_jk编译
3.2.1 使用系统Apache的mod_jk选用
去[url]http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/[/url]
网站下载mod_jk
3.2.2 编译mod_jk
[root@node1 ~]$ tar zxvf tomcat-connectors-1.2.23-src.tar.gz
[root@node1 ~]$cd tomcat-connectors-1.2.23-src
[root@node1 tomcat-connectors-1.2.23-src]$./configure --with-apxs=PREFIX/apxs
[root@node1~]$ make
[root@node1 ~]$ tar zxvf tomcat-connectors-1.2.23-src.tar.gz
[root@node1 ~]$cd tomcat-connectors-1.2.23-src
[root@node1 tomcat-connectors-1.2.23-src]$./configure --with-apxs=PREFIX/apxs
[root@node1~]$ make
[root@node1 ~]$cd tomcat-connectors-1.2.23-src
[root@node1 tomcat-connectors-1.2.23-src]$./configure --with-apxs=PREFIX/apxs
[root@node1~]$ make
注:PREFIX 为系统Apache服务的apxs路径,每个linux系统不一样,你可以用whereis apxs搜索一下。
3.2.3 使用自己安装Apache的mod_jk选用
可以从
[url]http://www.apache.org/dist/jakarta/tomcat-connectors/[/url]
jk/binaries/ 下载对应操作系统的 mod_jk 1.2.x 的二进制版本。
jk/binaries/ 下载对应操作系统的 mod_jk 1.2.x 的二进制版本。
3.3 配置Apache装载mod_jk
修改 APACHE_HOME/conf/httpd.conf 文件:
[root@node1 ~]$vi /etc/httpd/conf/httpd.conf
[root@node1 ~]$vi /etc/httpd/conf/httpd.conf
在文件的末尾添加一行,保存退出:
# Include mod_jk's specific configuration file
Include conf/mod-jk.conf
Include conf/mod-jk.conf
创建一个名字为
APACHE_HOME/conf/mod-jk.conf
的文件,并增加如下内容:
# Load mod_jk module
# Specify the filename of the mod_jk lib
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 indicates to send SSK KEY SIZE
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat
JkRequestLogFormat "%w %V %T"
# Mount your applications
JkMount /application/* loadbalancer
# You can use external file for mount points.
# It will be checked for updates each 60 seconds.
# The format of the file is: /url=worker
# /examples/*=loadbalancer
JkMountFile conf/uriworkermap.properties
# Add shared memory.
# This directive is present with 1.2.10 and
# later versions of mod_jk, and is needed for
# for load balancing to work properly
JkShmFile logs/jk.shm
# Add jkstatus for managing runtime data
<Location /jkstatus/>
JkMount status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
# Specify the filename of the mod_jk lib
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 indicates to send SSK KEY SIZE
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat
JkRequestLogFormat "%w %V %T"
# Mount your applications
JkMount /application/* loadbalancer
# You can use external file for mount points.
# It will be checked for updates each 60 seconds.
# The format of the file is: /url=worker
# /examples/*=loadbalancer
JkMountFile conf/uriworkermap.properties
# Add shared memory.
# This directive is present with 1.2.10 and
# later versions of mod_jk, and is needed for
# for load balancing to work properly
JkShmFile logs/jk.shm
# Add jkstatus for managing runtime data
<Location /jkstatus/>
JkMount status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
创建一个名字为
APACHE_HOME/conf/uriworkermap.properties
的文件,并增加如下内容:
# Simple worker configuration file
# Mount the Servlet context to the ajp13 worker
/jmx-console=loadbalancer
/jmx-console/*=loadbalancer
/web-console=loadbalancer
/web-console/*=loadbalancer
# Mount the Servlet context to the ajp13 worker
/jmx-console=loadbalancer
/jmx-console/*=loadbalancer
/web-console=loadbalancer
/web-console/*=loadbalancer
创建一个名字为APACHE_HOME/conf/workers.properties的文件,并增加如下内容:
# Define list of workers that will be used
# for mapping requests
worker.list=loadbalancer,status
# Define Node1
# modify the host as your host IP or DNS name.
worker.node1.port=8009
worker.node1.host=node1.mydomain.com
worker.node1.type=ajp13
worker.node1.lbfactor=1
worker.node1.cachesize=10
# Define Node2
# modify the host as your host IP or DNS name.
worker.node2.port=8009
worker.node2.host=node2.mydomain.com
worker.node2.type=ajp13
worker.node2.lbfactor=1
worker.node2.cachesize=10
# Load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=1
#worker.list=loadbalancer
# Status worker for managing load balancer
worker.status.type=status
# for mapping requests
worker.list=loadbalancer,status
# Define Node1
# modify the host as your host IP or DNS name.
worker.node1.port=8009
worker.node1.host=node1.mydomain.com
worker.node1.type=ajp13
worker.node1.lbfactor=1
worker.node1.cachesize=10
# Define Node2
# modify the host as your host IP or DNS name.
worker.node2.port=8009
worker.node2.host=node2.mydomain.com
worker.node2.type=ajp13
worker.node2.lbfactor=1
worker.node2.cachesize=10
# Load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=1
#worker.list=loadbalancer
# Status worker for managing load balancer
worker.status.type=status
将前面编译过的
mod_jk.so
和下载的
mod_jk.so
复制到
APACHE_HOME/
modules
文件夹下。其中,
mod_jk.so
的名字要与
mod-jk.conf
文件中的
“
LoadModule jk_module modules/
mod_jk.so
”相同。
3.3 JBoss集群配置
3.3.1 加入集群:
编辑JBOSS_HOME/server/all/deploy/jbossweb-tomcat50.sar/server.xml文件(在jboss中,all的配置就是集群配置,而jbossweb-tomcat50.sar是jboss4.0.5.GA的配置,在4.2.0+里是jboss-web.deployer):
<
Engine
name
="jboss.web"
defaultHost
="localhost"
>
... ...
</
Engine
>
为
<
Engine
name
="jboss.web"
defaultHost
="localhost"
jvmRoute="node1"
>
... ...
</
Engine
>
<!--
其中,node1为节点名,与前面mod_jk那里的workers.properties里的节点对应-->
<
Engine
name
="jboss.web"
defaultHost
="localhost"
>
... ...
</ Engine >
为
< Engine name ="jboss.web" defaultHost ="localhost"
... ...
</ Engine >
为
< Engine name ="jboss.web" defaultHost ="localhost"
jvmRoute="node1"
>
... ...
</ Engine >
<!-- 其中,node1为节点名,与前面mod_jk那里的workers.properties里的节点对应-->
... ...
</ Engine >
<!-- 其中,node1为节点名,与前面mod_jk那里的workers.properties里的节点对应-->
3.3.2
激活
mod_jk
编辑JBOSS_HOME/server/all/deploy/jbossweb-tomcat50.sar/META-INF/
jboss-service.xml文件:
jboss-service.xml文件:
<
attribute
name
="UseJK"
>fasle
</
attribute
>
<!-- 改为 -->
< attribute name ="UseJK" >true </ attribute >
<!-- 改为 -->
< attribute name ="UseJK" >true </ attribute >
3.3.3 配置应用集群
Session复制:
修改
YOURAPP
/WEB-INF/web.xml
文件,在web.xml文件的开头增加distributable:
<?
xml
version
="1.0"
?>
< web-app [url]http://java.sun.com/xml/ns/j2ee=[/url]"http://java.sun.com/xml/ns/j2ee"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
[url]http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd[/url]"
version ="2.4" >
< distributable />
<!-- ... -->
</ web-app >
< web-app [url]http://java.sun.com/xml/ns/j2ee=[/url]"http://java.sun.com/xml/ns/j2ee"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
[url]http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd[/url]"
version ="2.4" >
< distributable />
<!-- ... -->
</ web-app >
配置
Session
复制模式:
增加YOURAPP/WEB-INF/jboss-web.xml文件,添加如下内容(这都是默认,具体的要根据你的应用、运行环境来配置,可参考《JBoss企业级应用服务平台群集指南》的英文官方文档):
<?
xml
version
="1.0"
?>
< 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-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 >
3.4 JBoss集群的启动与关闭
与前面的单个jboss启动和关闭一样,只是在启动命令里的把default换成了all:
[jboss@node1 ~]$ JBOSS_HOME/bin/run.sh -c all
JBoss
集群里有个
farming
服务,即热部署应用归档文件
(
例如
, EAR
包
, WAR
包或是
SAR
包。不是文件夹后面加个".war"的那种)。
将你的应用程序打好EAR等归档文件包放到集群中任意一台JBoss的 [JBOSS_HOME/server/all/farm]文件夹中, JBoss会自动的复制此应用归档文件到集群中的其他节点并完成部署。
在运行的JBoss集群服务中,从任何一个节点的farm/ 目录下删除应用,应用程序首先从本地卸载,然后再从集群中其他服务节点的farm目录删除应用。
3.6 其他
上面所做的配置和修改都是使用
Apache做前端HTTP负载的方式,如果使用其他硬件产品做前端负载(如:F5),则JBoss不需要修改,只需使用[JBOSS_HOME/bin/run.sh –c all]启动即可。同时,不管哪种方式,JBoss都是要在同一个网段中(如:192.168.1.*)。
好了,到此jboss的简单群集配置完毕。水平有限,错误之处请谅解。也希望大家的完善。
本文转自xudayu 51CTO博客,原文链接:http://blog.51cto.com/xudayu/64842,如需转载请自行联系原作者