Infinispan: Как объединить встроенный кеш и автономный сервер в одном кластере?
В качестве подтверждения концепции я пытаюсь создать бесконечный кластер с существующим приложением, которое запускает встроенный кэш и один или несколько автономных бесконечных серверов.
Причина этого заключается в том, что я хочу показать, что существует способ автоматического создания кластера с нулевой конфигурацией путем простого запуска только что загруженных автономных бесконечно удаленных серверов. Таким образом, мое приложение запускает встроенный кеш, который будет автоматически "соединяться" с новыми узлами.
Я использую настройки по умолчанию для infinispan и jgroups (см. Ниже).
Эффект состоит в том, что два или более моих приложений со встроенным кешем "видят друг друга", а два или более автономных сервера с неограниченным сроком действия видят друг друга. Но ни один из моих узлов не "видит" автономные узлы, и они не видят мои узлы.
Я использую Infispan 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>
2 ответа
Возможно, ваша проблема в настройке многоадресного порта / адреса в JGroups. Также убедитесь, что вы используете те же настройки IPv4 / IPv6.
Проблема кажется со стеком IPv4/IPv6
Использовать аргумент JVM при создании статического сервера
-Djava.net.preferIPv4Stack=true
это заставит приложение использовать IPV4 в качестве стека по умолчанию.