转载:http://blog.sina.com.cn/s/blog_4a2cf9700100olbd.html
初始化安装
在所有的服务器上安装JBossAS
在服务器上安装JBoss AS.最简单的方法就是把下载的JBoss解压缩出来就可以.
如果想要在一台服务上运行多个JBossAS实例,你可以把JBoss分别安装在文件系统的不同位置,也可以仅拷贝all目录下的配置内容,例如JBoss的解压目录是/var/jboss,可以这样做
cd /var/jboss/server
cp -r all node1
cp -r all node2
在每个节点,决定要绑定的IP地址
当你运行JBoss,不管是不是集群模式,你都需要告诉JBoss他需要绑定到哪个地址来进行监听通讯(默认地址是Localhost,这个地址比较安全但是不是特别有效,特别是在配置集群环境的时候),所以你需要确定使用什么地址。
保证多播可用
JBossAS默认使用UDP多播来进行集群服务器间通讯的,保证每个服务器所在的网络内的路由器、交换机都配置支持多播,如果你想要在一台服务器上运行多个节点服务,那就需要保证当前服务器系统的路由表中包含一个多播路由地址。可以参考介绍JGroups的文档来了解多一些内容,JGroups文档地址http://www.jgroups.org。这里面还包含一些如何使用JGroup分析工具来判断多播是否有效。
NOTE
JBossAS集群不是必须使用UDP多播,它也可以配置成使用TCPunicast来进行节点间交互。
为每个节点确定一个唯一的“ServerPeerID”
JBoss消息集群需要这个唯一ID,如果不运行JBoss消息的话就可以忽略这个配置(例如你可以将JBM从服务器配置的deploy目录中移出)。JBM需要在每个节点又一个唯一的编号。
除了以上这些步骤,下面有两个可选的步骤,用来帮助你确保你的集群同运行在同一网络中的其他的JBoss集群区分开来。
为你的集群取个唯一的名字
JBossAS集群的默认名称是”DefaultPartition”。为你的环境中的不同集群取不同的名称。例如”QAPartition”或者”BobsDevPartition”。名称中”Partition”的使用不是必须的。如果从效率考虑最好短一些,因为它将被包含在所有集群内交互的消息中。
为你的集群选择一个唯一的多播地址
JBossAS默认使用UDP多播放时来进行节点间交互。为你使用的每个群选择一个为一个的多播地址。一个好的多播地址是类似239.255.x.y的方式。http:/
/www.29west.com/docs/THPM/multicast-address-assignment.html[http://www.29west.com/
docs/THPM/multicast-address-assignment.html]将为你提供如果选择好的多播地址的建议。
也可以参考Section 10.2.2, “Isolating JGroups Channels”来寻找更多的建议
将JBossAS以集群方式加载
在局域网环境中以集群方式启动JBossAS的最简单方式就是使用 “–c all”参数来启动服务实例。这些服务器实例会自动组成一个集群。
让我们看一些不同情况下的安装方法。在每个情况下我们都只创建一个有两个节点的集群,第一个节点的”ServerPeerID”是1,第二个节点的是2。我们把我们的群命名为”DocsPartition”,使用239.255.100.100这个多播地址。两个节点的群不代表是各种情况下的最优选择,他仅仅是完成这个例子的最简单的配置。
场景1:各节点在不同机器上
这是最常见的使用场景。假设两台机器分别叫做”node1”与”node2”,node1的地址是192.168.0.101,node2的地址是192.168.0.102,他们的”ServerPeerID”分别是1和2。假设这两个机器得Jboss都装在/var/jobss目录下
节点1加载过程
Cd /var/jboss/bin
./run.sh –c all –g DocsPartition –u 239.255.100.100 \
-b 192.168.0.101 –Djboss.messaging.ServerPeerID=1
节点2只有-b参数与ServerPeerID参数不同
Cd /var/jboss/bin
./run.sh –c all –g DocsPartition –u 239.255.100.100 \
-b 192.168.0.102 –Djboss.messaging.ServerPeerID=2
参数-c使用all配置项,该配置项包含集群的配置项,参数-g设置集群的名称。参数-u设置集群内节点交互的多播地址。参数-b设置需要绑定的地址,参数-D设置系统属性jboss.messaging.ServerPeerId的值,JBoss消息需要这个值在群中要求唯一。
场景2:在单台有两个IP地址的服务器上搭建2个节点
在同一台设备上运行多个节点这在开发环境中是经常出现的。在这种情况下,该服务器有多个地址,例如IP地址,这样就可以让多个JBoss实例分别绑定到不同的地址上,防止在地址绑定时出现端口冲突的问题。
假设这个服务器被分配了192.168.0.101和192.168.0.102两个地址。与场景1不同,我们需要保证每个AS实例都需要有自己的工作区域。所以不能使用all配置项,我们使用node1与node2配置项,这两个都是从all中拷贝过来的。
打开一个控制窗口运行第一个实例:
cd /var/jboss/bin
./run.sh –c node1 –g DocsPartition –u 239.255.100.100 \
-b 192.168.0.101 –Djboss.messaging.ServerPeerID=1
节点2只有-b参数与-c参数不同,同时ServerPeerID的值不同
Cd /var/jboss/bin
./run.sh –c node2 –g DocsPartition –u 239.255.100.100 \
-b 192.168.0.102 –Djboss.messaging.ServerPeerID=2
场景3:在一台只有一个地址的服务器上安装两个节点实例
这个与场景2类似,不同时着台机器只有一个地址。两个实例不能同时绑定到到同一个地址和端口,所以我们需要通知JBoss启动实例时绑定不同的端口。可以通过配置jboss.service.binding.set系统参数来配置,这个参数由ServiceBindingManager服务提供。
打开一个控制窗口运行第一个实例:
cd /var/jboss/bin
./run.sh –c node1 –g DocsPartition –u 239.255.100.100 \
-b 192.168.0.101 –Djboss.messaging.ServerPeerID=1 \
-Djboss.service.binding.set=ports-default
节点2:
cd /var/jboss/bin
./run.sh –c node2 –g DocsPartition –u 239.255.100.100 \
-b 192.168.0.102 –Djboss.messaging.ServerPeerID=2
-Djboss.service.binding.set=ports-01
这样可以通知ServiceBindingManager在第一个节点使用默认端口(例如JNDI在1099)。第二个节点使用”prots-01”绑定设置,默认是在各个默认端口的基础上累加100(例如JNDI在1199)。可以从conf/bootstrap/bindings.xml文件中看到更多的ServiceBindingManager配置项。