【问题标题】:Infinispan/JGroups cluster connection failure, when TCPPING.initialHost contains multiple hosts当 TCPPING.initialHost 包含多个主机时,Infinispan/JGroups 集群连接失败
【发布时间】:2016-07-06 20:09:22
【问题描述】:

我正在尝试使用 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 配置 xml 吗?
  • 我从代码中创建了 JChannel。添加到帖子中的代码。

标签: java infinispan jgroups


【解决方案1】:

也许发现阶段花费的时间太长,因为 JGroups 尝试建立与 15 台主机的连接,但其中只有 2-3 台处于活动状态。我建议将 TCP.scok_conn_timeout 设置为较低的值(200?),以便我们从连接返回到最多 200 毫秒后关闭的主机。 也许 GMS.join_timeout 需要增加,TCPPING.timeout 也是如此。它们应该高于最长的发现阶段。

【讨论】:

    猜你喜欢
    • 2017-11-09
    • 2023-03-15
    • 2018-05-25
    • 2015-11-12
    • 1970-01-01
    • 2023-03-12
    • 2015-01-18
    • 2020-07-15
    • 2013-10-25
    相关资源
    最近更新 更多