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启动脚本
jboss安装时自带all、default、minimal三种配置,all支持集群,所以需要修改jboss启动脚本将配置变为all。
[[email protected] /]# vim /usr/local/jboss-4.0.5.GA/bin/jboss_init_redhat.sh
将这里的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
node1.localdomain
5.发布应用
将应用copy到集群中任意节点的/usr/local/jboss-4.0.5.GA/server/all/farm 目录下,该应用会自动同步到集群中各个节点。
node1.localdomain log
node2.localdomain log