Infinispan: Как объединить встроенный кеш и автономный сервер в один кластер?

В качестве доказательства концепции я пытаюсь построить кластер infinispan с существующим приложением, которое запускает встроенный кеш и один или несколько автономных серверов Infinispan.

Подтверждением этого является то, что я хочу показать, что существует способ автоматического создания кластера с нулевой конфигурацией путем простого запуска только что загруженных автономных серверов infinispan. Итак, мое приложение запускает встроенный кеш, который будет автоматически "присоединяться" новыми узлами.

Я использую конфигурацию по умолчанию для infinispan и jgroups (см. Ниже).

В результате два или более моих приложения со встроенным кешем «видят друг друга», а два или более автономных сервера Infinispan видят друг друга. Но ни один из моих узлов не «видит» автономные узлы, и они не видят мои узлы.

Пользуюсь infinispan 6.0.2.

Автономный сервер: http://downloads.jboss.org/infinispan/6.0.2.Final/infinispan-server-6.0.2.Final-bin.zip

Пожалуйста, дайте подсказки о том, что нужно проверить, или дайте ссылки на ресурсы, которые я мог бы изучить, чтобы эта работа работала.

Это код, запускающий встроенный кеш:

  DefaultCacheManager manager = new DefaultCacheManager(
    GlobalConfigurationBuilder.defaultClusteredBuilder().transport()
      .nodeName( node ).addProperty( "configurationFile", "jgroups.xml" )
      .build(), new ConfigurationBuilder().clustering()
      .cacheMode( CacheMode.DIST_SYNC ).build() );

  Cache<String, String> cache = manager.getCache( "default" );

Я использую jgroups-config:

<config xmlns="urn:org:jgroups"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:org:jgroups file:schema/JGroups-3.2.xsd">

    <UDP
            mcast_addr="${jgroups.udp.mcast_addr:228.6.7.8}"
            mcast_port="${jgroups.udp.mcast_port:46655}"
            tos="8"
            ucast_recv_buf_size="200k"
            ucast_send_buf_size="200k"
            mcast_recv_buf_size="200k"
            mcast_send_buf_size="200k"
            loopback="true"
            max_bundle_size="64000"
            max_bundle_timeout="30"
            ip_ttl="${jgroups.udp.ip_ttl:2}"
            enable_bundling="true"
            enable_diagnostics="false"
            bundler_type="old"

            thread_naming_pattern="pl"

            thread_pool.enabled="true"
            thread_pool.min_threads="2"
            thread_pool.max_threads="30"
            thread_pool.keep_alive_time="60000"
            thread_pool.queue_enabled="true"
            thread_pool.queue_max_size="100"
            thread_pool.rejection_policy="Discard"

            oob_thread_pool.enabled="true"
            oob_thread_pool.min_threads="2"
            oob_thread_pool.max_threads="30"
            oob_thread_pool.keep_alive_time="60000"
            oob_thread_pool.queue_enabled="false"
            oob_thread_pool.queue_max_size="100"
            oob_thread_pool.rejection_policy="Discard"
            />

    <PING timeout="3000" num_initial_members="3"/>
    <MERGE2 max_interval="30000" min_interval="10000"/>
    <FD_SOCK/>
    <FD_ALL timeout="15000"/>
    <VERIFY_SUSPECT timeout="5000"/>
    <!-- Commented when upgraded to 3.1.0.Alpha (remove eventually)
    <pbcast.NAKACK  exponential_backoff="0"
                    use_mcast_xmit="true"
                    retransmit_timeout="300,600,1200"
                    discard_delivered_msgs="true"/> -->
    <pbcast.NAKACK2
            xmit_interval="1000"
            xmit_table_num_rows="100"
            xmit_table_msgs_per_row="10000"
            xmit_table_max_compaction_time="10000"
            max_msg_batch_size="100"/>

    <!-- Commented when upgraded to 3.1.0.Alpha (remove eventually)
    <UNICAST timeout="300,600,1200"/>  -->
    <UNICAST2
            stable_interval="5000"
            xmit_interval="500"
            max_bytes="1m"
            xmit_table_num_rows="20"
            xmit_table_msgs_per_row="10000"
            xmit_table_max_compaction_time="10000"
            max_msg_batch_size="100"
            conn_expiry_timeout="0"/>
    <pbcast.STABLE stability_delay="500" desired_avg_gossip="5000" max_bytes="1m"/>
    <pbcast.GMS print_local_addr="false" join_timeout="3000" view_bundling="true"/>
    <UFC max_credits="200k" min_threshold="0.20"/>
    <MFC max_credits="200k" min_threshold="0.20"/>
    <FRAG2 frag_size="8000"  />
    <RSVP timeout="60000" resend_interval="500" ack_on_delivery="true" />
</config>

person marsfromlars    schedule 05.06.2014    source источник
comment
Вы также должны опубликовать конфигурацию своего сервера. Возможно там по-разному установлены адреса и порты многоадресной рассылки JGroups. Кроме того, вам следует включить режим совместимости infinispan.org/.0 x / user_guide /   -  person Radim Vansa    schedule 06.06.2014
comment
Спасибо. Я действительно был недооценен всей темой сетевых адресов многоадресной рассылки. После исправления порта и адреса единственной оставшейся проблемой было то, что встроенный режим по умолчанию работал в IPv6, в то время как сервер infinispan предпочитал IPv4. Теперь это работает, спасибо большое.   -  person marsfromlars    schedule 06.06.2014
comment
Хорошо, я добавил ответ, чтобы вы могли проверить ответ на вопрос.   -  person Radim Vansa    schedule 07.06.2014


Ответы (2)


Вероятно, ваша проблема заключается в настройке порта / адреса многоадресной рассылки в JGroups. Также убедитесь, что вы используете те же настройки IPv4 / IPv6.

person Radim Vansa    schedule 06.06.2014

Проблема с стеком IPv4 / IPv6

Использовать аргумент JVM при настройке сервера infinispan

-Djava.net.preferIPv4Stack=true

это заставит приложение использовать IPV4 в качестве стека по умолчанию.

person Pranjal jaju    schedule 08.07.2015