Ошибка подключения кластера Infinispan / JGroups, когда TCPPING.initialHost содержит несколько хостов

Я пытаюсь настроить Infinispan с использованием транспорта TCP.

Если в 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;

person Tarlog    schedule 14.01.2013    source источник
comment
Можете ли вы вставить свою конфигурацию jgroups в xml?   -  person Καrτhικ    schedule 22.01.2013
comment
Я создаю JChannel из кода. Код добавлен в пост.   -  person Tarlog    schedule 23.01.2013


Ответы (1)


Возможно, фаза обнаружения занимает слишком много времени, так как JGroups пытается установить соединение с 15 хостами, и только 2-3 из них живы. Я предлагаю установить TCP.scok_conn_timeout на низкое значение (200?), Чтобы мы возвращались из соединения с хостом, который не работает через максимум 200 мс. Возможно, нужно увеличить GMS.join_timeout и TCPPING.timeout. Они должны быть выше, чем самая длинная фаза обнаружения.

person Bela Ban    schedule 24.01.2013