作为概念验证,我尝试使用现有应用程序构建一个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>
答案 0 :(得分:1)
您的问题可能出在JGroups中的多播端口/地址设置中。另外,请检查您是否使用相同的IPv4 / IPv6设置。
答案 1 :(得分:1)
问题似乎是IPv4 / IPv6堆栈
在statring infinispan服务器
时使用JVM Argument-Djava.net.preferIPv4Stack=true
这将使应用程序使用IPV4作为默认堆栈。