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,提问作者Михаил
相关产品推荐
相关产品推荐

