JBoss EAP 6.4 Infinispan 集群缓存网络问题

Posted

技术标签:

【中文标题】JBoss EAP 6.4 Infinispan 集群缓存网络问题【英文标题】:JBoss EAP 6.4 Infinispan Clustered cache network issue 【发布时间】:2020-08-15 21:36:54 【问题描述】:

我们有一个在生产环境中运行良好的 2 节点集群 JBoss 环境。我们偶尔会遇到两个缓存停止相互通信的问题(我们没有看到任何与 infinispan 相关的日志,但我们注意到应用程序日志得出结论认为缓存已停止相互通信)。为了解决这个问题,我们暂时关闭了 1 个节点。然后我们在几个小时后启动另一个节点,它再次开始正常工作。有时它不会,所以我们将它关闭一段时间,然后在我们下次打开它时它会起作用。非常随机的行为。 对我们来说,这似乎是一个间歇性的网络故障。所以我们需要让网络团队参与进来。但我不明白我应该告诉他们什么。 我的问题是: 需要检查哪些配置以及如何检查它们以验证缓存是否能够相互通信。 我在standalone.xml 中的缓存相关设置是:

<property name="ehcache.multicast.address" value="x.x.x.21"/>

<subsystem xmlns="urn:jboss:domain:jgroups:1.1" default-stack="udp">
            <stack name="udp">
                <transport type="UDP" socket-binding="jgroups-udp"/>
                <protocol type="PING"/>
                <protocol type="MERGE3"/>
                <protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/>
                <protocol type="FD"/>
                <protocol type="VERIFY_SUSPECT"/>
                <protocol type="pbcast.NAKACK"/>
                <protocol type="UNICAST2"/>
                <protocol type="pbcast.STABLE"/>
                <protocol type="pbcast.GMS"/>
                <protocol type="UFC"/>
                <protocol type="MFC"/>
                <protocol type="FRAG2"/>
                <protocol type="RSVP"/>
            </stack>
            <stack name="tcp">
                <transport type="TCP" socket-binding="jgroups-tcp"/>
                <protocol type="MPING" socket-binding="jgroups-mping"/>
                <protocol type="MERGE2"/>
                <protocol type="FD_SOCK" socket-binding="jgroups-tcp-fd"/>
                <protocol type="FD"/>
                <protocol type="VERIFY_SUSPECT"/>
                <protocol type="pbcast.NAKACK"/>
                <protocol type="UNICAST2"/>
                <protocol type="pbcast.STABLE"/>
                <protocol type="pbcast.GMS"/>
                <protocol type="UFC"/>
                <protocol type="MFC"/>
                <protocol type="FRAG2"/>
                <protocol type="RSVP"/>
            </stack>
        </subsystem>

 <socket-binding name="jgroups-mping" port="0" multicast-address="x.x.x.23" multicast-port="45700"/>
        <socket-binding name="jgroups-tcp" port="7600"/>
        <socket-binding name="jgroups-tcp-fd" port="57600"/>
        <socket-binding name="jgroups-udp" port="55200" multicast-address="x.x.x.24" multicast-port="45688"/>
        <socket-binding name="jgroups-udp-fd" port="54200"/>
        <socket-binding name="messaging" port="5445"/>
                <socket-binding name="messaging-group" port="0" multicast-address="x.x.x.22" multicast-port="$jboss.messaging.group.port:9876"/>
                <socket-binding name="messaging-throughput" port="5455"/>
        <socket-binding name="modcluster" port="0" multicast-address="y.y.y.105" multicast-port="23364"/>```



如果需要更多信息来澄清问题,请告诉我。谢谢。

2020 年 5 月 8 日更新:在 org.infinispan 和 org.jgroups 上启用了 DEBUG 日志。在日志中找到这一行: 07:17:13,928 FINE [STABLE] (OOB-20,shared=udp) my-host-52/ejb: 从 my-host-51/ejb 收到摘要 (digest=my-host-51/ejb: [4 ( 4)]) 与我自己的摘要不匹配 (my-host-52/ejb: [0 (0)]):忽略摘要并重新初始化自己的摘要。 这与问题相关是否有意义? 我可以看到所有缓存的类似日志:hibernate/ejb/singleton。

【问题讨论】:

摘要警告几乎可以肯定是因为节点相互怀疑并分裂成单独的集群视图,每个视图都有一个节点,所以听起来确实像一个网络问题。您没有看到任何来自 FD 的日志消息吗? 【参考方案1】:

没有日志就很难理解发生了什么。显然,将 org.jgroups 降低到 DEBUG 可能会产生过多的日志记录,但它会提供一些基本信息。

【讨论】:

添加了一条我在 DEBUG 级别找到的日志语句。这有任何意义吗?谢谢。

以上是关于JBoss EAP 6.4 Infinispan 集群缓存网络问题的主要内容,如果未能解决你的问题,请参考以下文章

带有 Infinispan 和 JBoss EAP 7.0.6 的休眠 L2C 不工作

从Jboss EAP 6.4迁移到EAP 7.1

Jboss (6.4 EAP) 到 WebSphere (7.x)

在 Eclipse Luna 中配置 jboss-eap-6.4 服务器时分配正确的主目录时出错

无法在 Jboss-eap-6.4 中部署 Spring Boot 应用程序

Jboss eap 6.4 https 配置监听端口 8443 失败