JBoss4.0.5集群实现---创建集群实例篇

按照 JBoss4.0.5集群实现--安装篇的方法我们在两台节点服务器中安装Jboss

 

 

环境:

IP                      hostname
192.168.11.200  node1.localdomain
192.168.11.202  node2.localdomain

 

注意JBoss群集通讯协议分为两种:Tcp和Udp
大型的JBoss集群使用UDP协议更好,可以减少网络流量。而对于小型的JBoss集群,使用TCP协议比较好,也比较安全。

下面的例子是UDP的,因为Jboss的ALL模式默认就是UDP的。如果想具体了解Jboss通讯协议配置请查看

cluster-service.xml

 

1.修改jboss启动脚本

JBoss4.0.5集群实现---创建集群实例篇
 

jboss安装时自带all、default、minimal三种配置,all支持集群,所以需要修改jboss启动脚本将配置变为all。

[[email protected] /]# vim /usr/local/jboss-4.0.5.GA/bin/jboss_init_redhat.sh


JBoss4.0.5集群实现---创建集群实例篇
 将这里的default修改为all

如果您不想修改启动脚本的话,也可以通过设置环境变量来指定jboss配置

export JBOSS_CONF=all

 

 

JBoss启动时需要指定监听IP,如果不指定默认是0.0.0.0,即所有IP。这样会导致jboss异常。至于为什么会这样本人还没有深入研究。

export JBOSS_HOST=node1.localdomain

 

 2.启动每个jboss节点

[[email protected] /]# /usr/local/jboss-4.0.5.GA/bin/jboss_init_redhat.sh start

 

/usr/local/jboss-4.0.5.GA/bin/run.sh -c all -b node1.localdomain

 

注意:jboss有可能会报如下异常

java.net.SocketException: bad argument for IP_MULTICAST_IF: address not bound to any interface
        at java.net.PlainDatagramSocketImpl.socketSetOption(Native Method)
        at java.net.PlainDatagramSocketImpl.setOption(PlainDatagramSocketImpl.java:295)
 

 

 

解决办法:关闭jgroups对ipv6的支持

jvm参数中增加 -Djava.net.preferIPv4Stack=true

 

3.停止jboss节点

[[email protected] /]# /usr/local/jboss-4.0.5.GA/bin/jboss_init_redhat.sh stop

直接执行会抛出 "Could not obtain connection to any of these urls: localhost:1099" 解决办法修改jboss_init_redhat.sh

 

在脚本中找到下面一行:

JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"java -classpath $JBOSSCP org.jboss.Shutdown --shutdown"}

修改为:

JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"java -classpath $JBOSSCP org.jboss.Shutdown --shutdown -s $JBOSS_HOST"}

 

4.启动

成功启动两个节点后,为得到如下日志:

node2.localdomain
JBoss4.0.5集群实现---创建集群实例篇
 

node1.localdomain


JBoss4.0.5集群实现---创建集群实例篇
 

5.发布应用

将应用copy到集群中任意节点的/usr/local/jboss-4.0.5.GA/server/all/farm 目录下,该应用会自动同步到集群中各个节点。

 

 node1.localdomain log
JBoss4.0.5集群实现---创建集群实例篇
 

node2.localdomain log


JBoss4.0.5集群实现---创建集群实例篇