我正在尝试使用包含两个节点的简单Infinispan Server群集。问题是Infinispan忽略了bind_addr
文件中的clustered.xml
jgroups设置。我可以使用-Djgroups.bind_addr=GLOBAL
指定此设置 - 它可以工作,但它不方便。我使用bin/clustered.sh
脚本启动集群,使用TCP协议栈和MPING进行节点自动发现。
与jgroups相关的配置文件standalone/configuration/clustered.xml
的一部分:
<subsystem xmlns="urn:jboss:domain:jgroups:1.2" default-stack="${jboss.default.jgroups.stack:tcp}">
<stack name="udp">
<transport type="UDP" socket-binding="jgroups-udp"/>
<protocol type="PING"/>
<protocol type="MERGE2"/>
<protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/>
<protocol type="FD_ALL"/>
<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">
<property name="bind_addr">GLOBAL</property>
</protocol>
<protocol type="MERGE2"/>
<protocol type="FD_SOCK" socket-binding="jgroups-tcp-fd"/>
<protocol type="FD"/>
<protocol type="VERIFY_SUSPECT"/>
<protocol type="pbcast.NAKACK">
<property name="use_mcast_xmit">false</property>
</protocol>
<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>
我还尝试了-Djgroups.ignore.bind_addr = true选项,以防止Infinispan从系统属性而不是XML中导出bind_addr设置,无论谁设置它 - 它都没有帮助。
Infinispan 6.0版。
更新: socket-binding-group和接口元素:
<interfaces>
<interface name="management">
<!-- <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> -->
<any-address/>
</interface>
<interface name="public">
<!-- <inet-address value="${jboss.bind.address:127.0.0.1}"/> -->
<any-address/>
</interface>
</interfaces>
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/>
<socket-binding name="ajp" port="8009"/>
<socket-binding name="hotrod" port="11222"/>
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
<socket-binding name="jgroups-mping" port="0" multicast-address="${jboss.default.multicast.address:234.99.54.14}" 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="${jboss.default.multicast.address:234.99.54.14}" multicast-port="45688"/>
<socket-binding name="jgroups-udp-fd" port="54200"/>
<socket-binding name="memcached" port="11211"/>
<socket-binding name="modcluster" port="0" multicast-address="224.0.1.115" multicast-port="23364"/>
<socket-binding name="remoting" port="4447"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<socket-binding name="websocket" port="8181"/>
</socket-binding-group>
</server>
非常感谢任何帮助!
答案 0 :(得分:1)
我认为您必须在&lt; socket-binding-group&gt;中定义接口。或&lt;接口&gt;元素,所以在jgroups-udp或jgroups-tcp中。这些是在配置的末尾定义的,您可以尝试查看JGroups变量替换是否有效,例如&#34; $ {my.interface:GLOBAL}。&#34;
答案 1 :(得分:0)
我已从JGroups设置中完全删除了socket-binding
属性,只保留了bind_addr
个属性 - 现在它可以正常工作了。我很好奇他们之间的区别是什么。
答案 2 :(得分:0)
我遇到了同样的问题,并在 JGroups 文档中找到了解决方案, https://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/4/html/ch19s07s07.html
使用 -Djgroups.ignore.bind_addr=true
运行将强制它覆盖系统属性“bind_addr”并改用 XML bind_addr。
文档说,
<块引用>"这个设置告诉 JGroups 忽略 jgroups.bind_addr 系统 属性,而是使用 XML 中指定的任何内容”