JBoss企业级应用服务平台群集指南(九)

2.    JBossCacheJGroups服务

    JGroups  JBossCache  JBoss AS 群集提供底层的通信,节点复制和缓存服务。这些服务都配置成 MBeans。对于每一个类型的群集应用程序(如 Stateful Session EJBs distributed entity EJBs 等),都有一个 JBossCache JGroups  MBeans 的集合。
    JBoss AS 带有缺省的 JGroups  JBossCache 的配置集。大部分应用程序使用这些缺省的配置就够了。只是在部署有特殊网络或性能要求的应用程序时,你才需要做更多的配置。

2.1 JGroups配置

    JGroups  框架提供了启用群集系统里节点间到对点通信的服务。它建立在网络通信协议栈的顶层,它提供传输,发现( discovery ),可靠性( reliability )和故障( failure )检测,以及群集成员资格管理服务。图  2.1,  Protocol stack in JGroups   展示了  JGroups  的协议栈。
Figure 2.1. Protocol stack in JGroups
    JGroups  配置经常以和群集相关的  MBean  服务的嵌套属性的面目出现,例如  ClusterPartition MBean  PartitionConfig  属性或  TreeCache MBean   ClusterConfig  属性。你可以通过这些  MBean  属性来配置  JGroups  每一个协议的行为和属性( properties )。下面是一个  ClusterPartition MBean  里的  JGroups  配置的例子。
< mbean  code ="org.jboss.ha.framework.server.ClusterPartition" 
name ="jboss:service=DefaultPartition" > 

... ... 

< attribute  name ="PartitionConfig" > 
< Config > 
< UDP  mcast_addr ="228.1.2.3"  mcast_port ="45566" 
ip_ttl ="8"  ip_mcast ="true" 
mcast_send_buf_size ="800000"  mcast_recv_buf_size ="150000"  ucast_send_buf_size ="800000"  ucast_recv_buf_size ="150000"  loopback ="false" /> 
< PING  timeout ="2000"  num_initial_members ="3" 
up_thread ="true"  down_thread ="true" /> 
< MERGE2  min_interval ="10000"  max_interval ="20000" /> 
< FD  shun ="true"  up_thread ="true"  down_thread ="true" 
timeout ="2500"  max_tries ="5" /> 
< VERIFY_SUSPECT  timeout ="3000"  num_msgs ="3" 
up_thread ="true"  down_thread ="true" /> 
< pbcast.NAKACK  gc_lag ="50"  retransmit_timeout ="300,600,1200,2400,4800"  max_xmit_size ="8192" 
up_thread ="true"  down_thread ="true" /> 
< UNICAST  timeout ="300,600,1200,2400,4800"  window_size ="100"  min_threshold ="10"  down_thread ="true" /> 
< pbcast.STABLE  desired_avg_gossip ="20000" 
up_thread ="true"  down_thread ="true" /> 
< FRAG  frag_size ="8192" 
down_thread ="true"  up_thread ="true" /> 
< pbcast.GMS  join_timeout ="5000"  join_retry_timeout ="2000" 
shun ="true"  print_local_addr ="true" /> 
< pbcast.STATE_TRANSFER  up_thread ="true"  down_thread ="true" /> 
</ Config > 
</ attribute > 
</ mbean >
所有的  JGroups  配置数据包含在  JGroups config MBean  属性下的  <Config>  元素里。在后面的内容里,我们将探究  <Config>  元素的选项及它们的含义。

2.1.1      传输协议

     传输协议( transport protocols )从一个群集节点发送信息到另外一个节点(单播  unicast )或发送到群集里所有其他节点( mcast )。 JGroups  支持  UDP TCP   TUNNEL  等传输协议。
注意 
    UDP,TCP 和 TUNNEL 元素是相互排斥的。你只能在每个 JGroups Config 元素里使用一个传输协议。
2.1.1.1        UDP配置
    UDP  JGroups 的首选协议。UDP 使用多点传送(multicast )或多个单播(unicast)来发送和接收信息。如果你选择 UDP 作为你的群集服务的传输协议,你需要在 JGroups Config 元素的 UDP 子元素里配置它。下面是一个示例。
< UDP  mcast_send_buf_size ="32000" 
mcast_port ="45566"  ucast_recv_buf_size ="64000"  mcast_addr ="228.8.8.8"  bind_to_all_interfaces ="true" loopback ="true"  mcast_recv_buf_size ="64000"  max_bundle_size ="30000"  max_bundle_timeout ="30"  use_incoming_packet_handler ="false"  use_outgoing_packet_handler ="false"  ucast_send_buf_size ="32000"  ip_ttl ="32"  enable_bundling ="false" />
下列是在上述 JGroups 配置里的可用属性。
  ip_mcast 指定是否使用 IP 多点传送(multicasting)。它的缺省值是 true
  mcast_addr 指定加入到组(就是群集)里的多点传送地址(class D)。它的缺省值是228.8.8.8.
  mcast_port 指定多点传送端口号码。它的缺省值是 45566
  bind_addr 指定接收和发送多点传送的接口(如果可用,使用 bind.address 系统属性)。如果你有一个多宿主主机,把 bind_addr 属性设置为合适的 NIC IP 地址。如果 ignore.bind.address 属性为真(true)的话,这个属性将被忽略。
  bind_to_all_interfaces 指定是否这个节点应该为多点传送侦听所有的接口。它的缺省值是 false。它覆盖了接收多点传送的 bind_addr 属性。然而,bind_addr(如果设置了)仍会用来发送多点传送信息。
  ip_ttl 指定了多点传送数据包(packet)的 TTL
  use_incoming_packet_handler 指定是否使用单独的线程来处理输入的信息。
  use_outgoing_packet_handler 指定是否使用单独的线程来处理输出的(outgoing)信息。
  enable_bundling 指定是否启用捆绑(bundling)。如果它设为true,节点将会把输出的信息排队,一直到积累了 max_bundle_size 个字节,或者是 max_bundle_time 毫秒后,依哪个先发生而定。然后把排队的信息捆绑成一个大的信息发送出去。这个信息在接收端再解开。它的缺省值是 false
  loopback 指定是否在堆栈里回送(loop back)输出信息。在单播 unicast 模式下,信息都会发送给自己。如果是 mcast 模式,多点传送信息的备份将被发送。
discard_incompatibe_packets  指定是否丢弃从不同版本的  JGroups  过来的数据包。群集里的每个数据包都用  JGroups  版本号来标记。如果它设置为  true ,当接收到一个不同  JGroups  版本的信息时,这个信息将被丢弃否则,将记录一个警告。
  mcast_send_buf_size, mcast_recv_buf_size, ucast_send_buf_size,
ucast_recv_buf_size   定义接收和发送的缓冲区大小。设置大的接收缓冲区会比较好,这样数据包就不会因为缓冲区溢出而被丢弃。
注意 
    在安装 Windows 2000 的机器里,由于 media sense 特征与多点传送冲突(即使你关闭了 media sense),你需要把 UDP 协议的 loopback 属性设为 true。 
UDP,TCP 和 TUNNEL 元素是相互排斥的。你只能在每个 JGroups Config 元素里使用一个传输协议。
2.1.1.2        TCP配置
    另外,基于 JGroups 的群集系统也可以使用 TCP 连接。和 UDP 相比,当群集规模扩大时 TCP 会产生更多的网络流量,但是 TCP 更加可靠。TCP 从根本来说是一个单播(unicast)的协议。为了发送多点传送的信息,JGroups 使用多个 TCP 单播。如要把 TCP 作为一个传输协议来使用,你应该定义 JGroups Config 元素里的 TCP 元素。这是一个 TCP 元素的例子。
< TCP  start_port ="7800" 
bind_addr ="192.168.5.1" 
loopback ="true" />
下列是  TCP  元素里的可用属性。
  bind_addr  指定了绑定的地址。它也可以在服务器启动时用  -Dbind.address  命令行选项来设定。
  start_port, end_port  定义了服务器应该绑定的  TCP  端口范围。服务器套接字绑定从  start_port  开始的第一个可用端口。如果直到  end_port  都没有找到可用端口(例如,由于防火墙的缘故),服务器将抛出一个异常( exception )。
  loopback 指定是否在堆栈里回送( loop back )输出信息。在单播  unicast  模式下,信息都会发送给自己。如果是  mcast  模式,多点传送信息的备份将被发送。
  mcast_send_buf_size, mcast_recv_buf_size, ucast_send_buf_size,
ucast_recv_buf_size 定义接受和发送的缓冲区大小。设置大的接收缓冲区会比较好,这样数据包就不会因为缓冲区溢出而被丢弃。
  conn_expire_time  指定在多久(毫秒数)没有网络流量后, reaper  可以关闭这个连接。
  reaper_interval  指定运行  reaper  的时间(毫秒)。如果两个值都是  0 reaper  将不会运行。如果其中一个是  > 0 reaper  将被启用。
2.1.1.3        TUNNEL配置
    TUNNEL  协议使用外部的路由器来发送信息。这个外部路由器是  GossipRouter 。每个节点都得在这个路由器上注册。所有信息都被发送到这个路由器并被转发到目的地。 TUNNEL  方法可以用来设置与防火墙后面的节点通信。节点可以穿过防火墙(你可以用  80  端口)和  GossipRouter  建立一个  TCP  连接。路由器使用同一个连接来发送信息到防火墙后面的节点。 TUNNEL  配置在  JGroups Config  元素里的  TUNNEL  元素里被定义。下面是一个例子。
< TUNNEL  router_port ="12001" 
router_host ="192.168.5.1" />
下列是  TUNNEL  元素里的可用属性。
  router_host  指定  GossipRouter  运行在哪个主机上。
  router_port  指定  GossipRouter  侦听的端口。
  loopback 是否在堆栈里回送信息。它的缺省值是 true。


本文转自xudayu 51CTO博客,原文链接:http://blog.51cto.com/xudayu/70210,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值