历史版本2 :集群节点标红异常模块CLUSTER_MEMBER_MODULE 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 问题描述编辑

集群节点页面标红,如下图所示:

3.png

2. 排查步骤说明编辑

2.1 节点数量比预期的少

2.1.1 现象一

问题描述

比如启动了 3 个节点, 但是页面上只能看到 2 个。

1)原因一:集群通信异常

解决方案

  • 节点间 ip 是否能相互 ping 通。

  • 排查7800,7830, 7840, 7850, 7870这 5 个集群通信端口是否有防火墙。

2)原因二:获取到的网卡ip不对

解决方案

集群配置页面,节点管理可以对节点信息进行编辑,修改 ip 地址为正确的 ip 地址,然后重启工程即可。详情请参见:配置开启集群 文档的 3.4 节内容。

2.1.2 现象二

问题描述

单个节点只显示自己的节点,且节点飘红。

原因分析

2021-07-13 和 2021-07-16 的 JAR 包,不支持同时启动, 得一个节点启动完成后再启动另一个。

解决方案

升级到 2021-09-07 之后的JAR,  配置 hostname 对本地回环地址的映射后,启动正常,节点显示正常。 

2.2 节点数量符合预期

2.2.1 页面节点数正常但某个节点飘红

问题描述

比如启动了 3 个节点, 页面上能看到 3 个,但还是某个节点标红,且显示异常模块:CLUSTER_MEMBER_MODULE

排查步骤

1)集群刚启动,检测线程稍有滞后,等待一会刷新。

2)等待 3 分钟后依然标红,此时说明确实有异常,此时要观察日志,往下排查。

现象一

redis里的节点数量> jgroups里的节点数量

4.png

后台日志中可见报错类似如下:

17:23:40 ClusterMemberHealthMonitorSchedule-14-worker-1 ERROR [standard]  Cluster members may have errors. JGroupsNodes:[6bdaf2fa-2a6e-6b2e-b101-c96dc145f9c5, 72ca96f6a1bd9c72ffa52f02d83910ad005c03f751f6795af7df8aaf9ba43b20b49c330efe167feb], RedisNodes:[72ca96f6a1bd9c72ffa52f02d83910ad005c03f751f6795af7df8aaf9ba43b208b219ebaf96d8128, 6bdaf2fa-2a6e-6b2e-b101-c96dc145f9c5, 72ca96f6a1bd9c72ffa52f02d83910ad005c03f751f6795af7df8aaf9ba43b20b49c330efe167feb]

此时是有多个工程连接到了同一个 redis 环境, 且没有设置各自工程的 redis 前缀,导致 redis 里记录了其他集群的节点信息。

现象一解决方案

  • 每个集群连不同的 redis, 不要共用。

  • 给每个集群配单独的 redis 前缀 

1637667028560046.png

现象二

jgroups里的节点数量 > redis里的节点数量, 且报错 "[Cluster] node ***** cancel heartbeat"。

此时是因为集群节点的时间不同步, 导致检测线程异常。

现象二解决方案

同步服务器时间

2.2.2 两个节点各自显示另一个节点标红

问题描述

且显示异常模块:“CLUSTER_MEMBER_MODULE

原因分析

集群通信异常。

解决方案

节点间使用命令:ping -I eth0 ip 

其中 eth0 要换成本机的网卡, ip要换成节点管理页面显示的另一个节点的ip, 如下图:

7.png

1637667259339699.png

 命令执行后查看是否有警告信息,如下图:

1637667292968237.png

出现该警告,则表示当前用户没有这个命令的权限,需要更换 root 用户来启动工程,或者更换有权限的用户来启动工程,最好就是 root 用户。

如果是 root 用户执行 ping 命令仍然提示权限不足,可能是 java 没有网卡权限,需要给 java 命令赋权:

sudo setcap cap_net_raw=ep /usr/java/jdk1.8.0_102/bin/java

java 的路径换成实际的,然后重启。

2.2.3 两个节点显示两个节点标红

问题描述

双节点集群,每个节点单独访问正常,但是集群页面显示两个节点标红。后台报错com.fr.third.jgroups.TimeoutException:timeout waiting for response from xxx

1637667410564929.png

原因一

由于内存压力大了,服务器半瘫痪,节点间通信超时导致的节点异常。

原因一对应的解决方案:

内存状态恢复后节点会自动恢复正常。

原因二

Tomcat 下的 wabapps 文件夹放置了多个工程文件夹(多个 webroot ),导致工程重复启动。

原因二对应的解决方案:

将其他 webroot 移走。

原因三:

weblogic 和 WebSphere 容器部署时,重启工程需要将容器杀死再启动,不能通过容器的控制台来重启,否则会有线程残留,导致类似重复启动的情况,从而标红。

原因三对应的解决方案:

重启时杀死容器再启动,Tomcat 部署如果用 shutdown.sh 来停止也可能导致一样的问题。