2

作为概念验证,我尝试使用现有应用程序构建一个 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>
4

2 回答 2

1

您的问题可能出在 JGroups 中的多播端口/地址设置中。此外,请检查您是否使用相同的 IPv4 / IPv6 设置。

于 2014-06-06T21:25:07.243 回答
1

问题似乎与 IPv4/IPv6 堆栈有关

在统计 infinispan 服务器时使用 JVM 参数

-Djava.net.preferIPv4Stack=true

这将使应用程序使用 IPV4 作为默认堆栈。

于 2015-07-08T06:40:42.570 回答