`
whzhengzy
  • 浏览: 134848 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

关于WebLogic集群多播地址方面的问题解决

 
阅读更多
    WebLogic集群依靠多播地址来探测集群节点的“心跳”,多播地址默认一般是239.139.0.0,端口7001。那不同集群的多播地址能否重复呢?答案是:一定不能重复,必须保证“多播地址+端口”的唯一性。下面列举实际应用中多播地址重复的几个问题:

假定场景:有A、B两个WebLogic集群,并且多播地址+端口设置相同。A集群中有a1、a2两个被管server;B集群中有b1、b2两个被管server。A、B集群各通过Apache转发。
    案例1:
    访问集群A的应用时,不时出现会话丢失现象,分析后是request所带的jsessionid找不到对应的JVM。 这个用httpWatch工具可以跟踪到jsessionid,也可以打开weblogic的apache插件日志,能够看到相应的错误。
     原因:由于多播地址重复,集群A收到了集群B中节点的心跳信息,干扰了集群A的动态服务列表更新,丢失了a1或者a2的信息,使得本来转发到a1或a2节点的请求找不到相应的JVM,其实后台Session是在的。
    案例2:
    假定集群A和集群B的集群名称都为myCluster,本来两个集群,名称是可以相同的。但在多播地址重复的情况下,假定B集群已启动,此时启动A,可能会报出集群myCluster名称重复的ERROR信息。
   
    下面简单说明一下,在WebLogic集群环境下,如何利用多播来检测集群环境各节点都是正常的。如下:
    java -cp .:/……/server/lib/weblogic.jar weblogic.cluster.MulticastMonitor  <UdpAddress>  <UdpPort> <domainName>  <clusterName>

说明:
<XXX>代表参数,实际输入不要写 <> 。
(1)UdpAddress:多播地址
(2)UdpPort:多播端口
(3)domainName:WebLogic domain的名称
(4)clusterName:WebLogic集群名称
(5)标注的红色字体部分根据weblogic.jar的实际路径填写。

执行:
在WebLogic集群的每台机器上都执行一下,如果正常的话,每个机器上都能收到各节点的反馈信息。

(1)假设有2台机器,每台机器上部署了2个集群节点,那在每台机器上执行都能够收到4条UDP消息(分别对应4个节点)
(2)如果收到了集群外部的UDP消息,说明和其他集群多播配置有重复,需要更改多播地址。
分享到:
评论
1 楼 ironsabre 2012-12-24  
我们也遇到你说的这个问题了。
但是,如何来保证weblogic的这个组播地址是全局唯一的?
比如一个大公司,内部有几百个weblogic在跑,如何保证他们的唯一性?

相关推荐

Global site tag (gtag.js) - Google Analytics