[英]Hibernate Search, Infinispan, jgroups, Wildfly cluster integration configuration
[英]Infinispan/JGroups cluster connection failure, when TCPPING.initialHost contains multiple hosts
我正在尝试使用TCP传输配置Infinispan。
如果在TCPPING.initialHosts
我放置了所有潜在集群节点的列表,则集群根本不连接 - 大约有15个潜在节点,其中大多数都已死,通常只有2或3个存活。
但是,如果在TCPPING.initialHosts
我只列出了2-3个主机,则会成功创建群集。
我做错了什么?
更新:据我在日志和堆栈跟踪中看到,创建了活动节点之间的连接,并且节点交换了一些消息。 但是,群集仍未形成。
更新:这是创建JChannel
的代码:
JChannel ch = new JChannel(false);
ProtocolStack stack = new ProtocolStack();
ch.setProtocolStack(stack);
// TCPPING is responsible for discovery
TCPPING tcpping = new TCPPING();
List<IpAddress> initial_hosts = ... // get lists of hosts, list can be quite big
tcpping.setInitialHosts(initial_hosts);
tcpping.setErgonomics(false);
tcpping.setPortRange(0);
tcpping.setNumInitialMembers(3);
TCP tcp = new TCP();
tcp.setBindAddress(InetAddress.getByName(server.getHostName()));
tcp.setBindPort(server.getPort());
tcp.setThreadPoolMaxThreads(30);
tcp.setOOBThreadPoolMaxThreads(30);
NAKACK nakack = new NAKACK();
nakack.setUseMcastXmit(false);
nakack.setDiscardDeliveredMsgs(false);
MERGE2 merge = new MERGE2();
RSVP rsvp = new RSVP();
rsvp.setValue("timeout", 60 * 1000);
rsvp.setValue("resend_interval", 500);
rsvp.setValue("ack_on_delivery", false);
stack
.addProtocol(tcp)
.addProtocol(tcpping)
.addProtocol(merge)
.addProtocol(new FD_SOCK())
.addProtocol(new FD())
.addProtocol(new VERIFY_SUSPECT())
.addProtocol(nakack)
.addProtocol(new UNICAST2())
.addProtocol(new STABLE())
.addProtocol(new GMS())
.addProtocol(new UFC())
.addProtocol(new MFC())
.addProtocol(new FRAG2())
.addProtocol(rsvp);
stack.init();
return ch;
也许发现阶段需要太长时间,因为JGroups尝试建立与15个主机的连接,并且只有2-3个存活。 我建议将TCP.scok_conn_timeout设置为一个较低的值(200?),以便我们从连接返回到最大200ms后关闭的主机。 可能需要增加GMS.join_timeout,以及TCPPING.timeout。 它们应该高于最长的发现阶段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.