You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WildFly 11.0配置JGroups TCP单播失败,仍用默认UDP配置求助

WildFly 11.0 JGroups TCP配置失效问题

我使用WildFly 11.0,参考Red Hat文档配置JGroups TCP Socket绑定,因节点处于不同子网(跨防火墙),希望用UNICAST替代多播,但日志始终提示:

[org.infinispan.remoting.transport.jgroups.JGroupsTransport] (ServerService Thread Pool -- 76) ISPN000088: Unable to use any JGroups configuration mechanisms provided in properties {}. Using default JGroups configuration!

无法使用自定义配置而采用默认JGroups配置,且Wireshark捕获到UDP流量。已尝试文档中所有步骤仍未解决,相关配置如下:

<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
    <cache-container name="keycloak" jndi-name="infinispan/Keycloak">
        <local-cache name="realms">
            <eviction strategy="LRU" max-entries="10000"/>
        </local-cache>
        <local-cache name="users">
            <eviction strategy="LRU" max-entries="10000"/>
        </local-cache>
        <local-cache name="sessions"/>
        <local-cache name="authenticationSessions"/>
        <local-cache name="offlineSessions"/>
        <local-cache name="clientSessions"/>
        <local-cache name="offlineClientSessions"/>
        <local-cache name="loginFailures"/>
        <local-cache name="authorization">
            <eviction strategy="LRU" max-entries="10000"/>
        </local-cache>
        <local-cache name="actionTokens"/>
        <local-cache name="work"/>
        <local-cache name="keys">
            <eviction strategy="LRU" max-entries="1000"/>
            <expiration max-idle="3600000"/>
        </local-cache>
    </cache-container>
    <cache-container name="server" aliases="singleton cluster" default-cache="default" module="org.wildfly.clustering.server">
        <transport lock-timeout="60000"/>
        <replicated-cache name="default">
            <transaction mode="BATCH"/>
        </replicated-cache>
    </cache-container>
    <cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan">
        <transport lock-timeout="60000"/>
        <distributed-cache name="dist">
            <locking isolation="REPEATABLE_READ"/>
            <transaction mode="BATCH"/>
            <file-store/>
        </distributed-cache>
    </cache-container>
    <cache-container name="ejb" aliases="sfsb" default-cache="dist" module="org.wildfly.clustering.ejb.infinispan">
        <transport lock-timeout="60000"/>
        <distributed-cache name="dist">
            <locking isolation="REPEATABLE_READ"/>
            <transaction mode="BATCH"/>
            <file-store/>
        </distributed-cache>
    </cache-container>
    <cache-container name="hibernate" default-cache="local-query" module="org.hibernate.infinispan">
        <transport lock-timeout="60000"/>
        <local-cache name="local-query">
            <eviction strategy="LRU" max-entries="10000"/>
            <expiration max-idle="100000"/>
        </local-cache>
        <invalidation-cache name="entity">
            <transaction mode="NON_XA"/>
            <eviction strategy="LRU" max-entries="10000"/>
            <expiration max-idle="100000"/>
        </invalidation-cache>
        <replicated-cache name="timestamps" mode="ASYNC"/>
    </cache-container>
    <cache-container name="tapi-container" aliases="sfsb2" default-cache="tapi-cache" module="org.wildfly.clustering.ejb.infinispan" jndi-name="infinispan/tapi-container" statistics-enabled="true">
        <transport lock-timeout="60000"/>
        <replicated-cache name="tapi-cache" jndi-name="infinispan/tapi-container/tapi-cache" mode="ASYNC">
            <locking isolation="READ_COMMITTED"/>
            <transaction locking="OPTIMISTIC" mode="NONE"/>
            <eviction strategy="NONE"/>
        </replicated-cache>
    </cache-container>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>
<subsystem xmlns="urn:jboss:domain:jca:5.0">
    <archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/>
    <bean-validation enabled="true"/>
    <default-workmanager>
        <short-running-threads>
            <core-threads count="50"/>
            <queue-length count="50"/>
            <max-threads count="50"/>
            <keepalive-time time="10" unit="seconds"/>
        </short-running-threads>
        <long-running-threads>
            <core-threads count="50"/>
            <queue-length count="50"/>
            <max-threads count="50"/>
            <keepalive-time time="10" unit="seconds"/>
        </long-running-threads>
    </default-workmanager>
    <cached-connection-manager/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jdr:1.0"/>
<subsystem xmlns="urn:jboss:domain:jgroups:5.0" default-stack="tcp">
<channels default="ee">
    <channel name="ee" stack="tcp"/>
</channels>
<stacks>
    <stack name="tcp">
        <transport type="TCP" socket-binding="jgroups-tcp"/>
        <protocol type="TCPPING">
            <property name="initial_hosts">192.168.4.22[7600],192.168.4.23[7600]</property>
            <property name="num_initial_members">2</property>
            <property name="port_range">0</property>
            <property name="timeout">2000</property>
        </protocol>
        <protocol type="MERGE3"/>
        <protocol type="FD_SOCK" socket-binding="jgroups-tcp-fd"/>
        <protocol type="FD_ALL"/>
        <protocol type="VERIFY_SUSPECT"/>
        <protocol type="pbcast.NAKACK2">
            <property name="use_mcast_xmit">false</property>
        </protocol>
        <protocol type="UNICAST3"/>
        <protocol type="pbcast.STABLE"/>
        <protocol type="pbcast.GMS"/>
        <protocol type="MFC"/>
        <protocol type="FRAG2"/>
    </stack>
</stacks>
</subsystem>

问题排查与修复方案

  • 补全Keycloak缓存容器的Transport配置:你的keycloak缓存容器未指定<transport>,导致Infinispan默认使用UDP栈。需添加绑定到ee通道的配置:
    <cache-container name="keycloak" jndi-name="infinispan/Keycloak">
        <transport channel="ee" lock-timeout="60000"/>
        <!-- 原有local-cache配置保留 -->
    </cache-container>
    
  • 优化JGroups GMS协议配置:在pbcast.GMS中添加超时属性,避免节点等待多播:
    <protocol type="pbcast.GMS">
        <property name="join_timeout">5000</property>
        <property name="print_local_addr">true</property>
    </protocol>
    
  • 确认Socket绑定完整性:检查Socket绑定组是否包含TCP相关端口:
    <socket-binding-group name="standard-sockets" default-interface="public">
        <!-- 其他绑定项 -->
        <socket-binding name="jgroups-tcp" port="7600"/>
        <socket-binding name="jgroups-tcp-fd" port="57600"/>
    </socket-binding-group>
    
  • 验证跨子网网络连通性:确保两个节点的7600、57600端口双向可通,防火墙未拦截TCP流量。
  • 检查启动参数:确认启动WildFly时未通过-Djgroups.config系统属性指定其他配置文件,覆盖XML中的自定义设置。

内容的提问来源于stack exchange,提问作者Михаил

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 09:49:57