2014-11-05 4 views
1

При использовании JGroups с таким компонентом, как Infinispan, какие порты мне нужно открыть в брандмауэре?Infinispan jgroups firewall ports

Мой JGroups configration файл:

<config xmlns="urn:org:jgroups" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/JGroups-3.4.xsd"> 
<UDP 
     mcast_addr="${test.jgroups.udp.mcast_addr:239.255.0.1}" 
     mcast_port="${test.jgroups.udp.mcast_port:46655}" 
     bind_addr="${test.jgroups.udp.bind_addr:match-interface:eth0}" 
     bind_port="${test.jgroups.bind.port:46656}" 
     port_range="${test.jgroups.bind.port.range:20}" 
     tos="8" 
     ucast_recv_buf_size="25M" 
     ucast_send_buf_size="1M" 
     mcast_recv_buf_size="25M" 
     mcast_send_buf_size="1M" 

     loopback="true" 
     max_bundle_size="64k" 
     ip_ttl="${test.jgroups.udp.ip_ttl:2}" 
     enable_diagnostics="false" 
     bundler_type="old" 

     thread_naming_pattern="pl" 

     thread_pool.enabled="true" 
     thread_pool.min_threads="3" 
     thread_pool.max_threads="10" 
     thread_pool.keep_alive_time="60000" 
     thread_pool.queue_enabled="true" 
     thread_pool.queue_max_size="10000" 
     thread_pool.rejection_policy="Discard" 
     oob_thread_pool.enabled="true" 
     oob_thread_pool.min_threads="2" 
     oob_thread_pool.max_threads="4" 
     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" 

     internal_thread_pool.enabled="true" 
     internal_thread_pool.min_threads="1" 
     internal_thread_pool.max_threads="4" 
     internal_thread_pool.keep_alive_time="60000" 
     internal_thread_pool.queue_enabled="true" 
     internal_thread_pool.queue_max_size="10000" 
     internal_thread_pool.rejection_policy="Discard" 
     /> 

    <PING timeout="3000" num_initial_members="3"/> 
    <MERGE2 max_interval="30000" min_interval="10000"/> 
    <FD_SOCK bind_addr="${test.jgroups.udp.bind_addr:match-interface:eth0}" start_port="${test.jgroups.fd.sock.start.port:9780}" port_range="${test.jgroups.fd.sock.port.range:10}" /> 
    <FD_ALL timeout="15000" interval="3000" /> 
    <VERIFY_SUSPECT timeout="1500" bind_addr="${test.jgroups.udp.bind_addr:match-interface:eth0}"/> 

    <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"/> 
    <UNICAST3 
     xmit_interval="500" 
     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"/> 
    <tom.TOA/> <!-- the TOA is only needed for total order transactions--> 

    <UFC max_credits="2m" min_threshold="0.40"/> 
    <MFC max_credits="2m" min_threshold="0.40"/> 
    <FRAG2 frag_size="30k" /> 
    <RSVP timeout="60000" resend_interval="500" ack_on_delivery="false" /> 
</config> 

Теперь у меня есть следующие порты открытые в брандмауэре (Chain ВХОДА (политика ACCEPT))

ACCEPT  udp -- anywhere    anywhere   multiport dports 46655:46676 /* 205 ipv4 */ state NEW 

ACCEPT  tcp -- anywhere    anywhere   multiport dports 9780:9790 /* 204 ipv4 */ state NEW 

Но все же после запуска infinispan встроенной кэш-памяти для нескольких мин я получаю

2014-11-05 18:21:38.025 DEBUG org.jgroups.protocols.FD_ALL - haven't received a heartbeat from <hostname>-47289 for 15960 ms, adding it to suspect list 

это прекрасно работает, если я выключу iptables Заранее спасибо

ответ

3

Как вы установили правила iptables? Я использовал (на Fedora 18)

iptables -A INPUT -i lo -j ACCEPT 
iptables -A OUTPUT -o lo -j ACCEPT 
iptables -A INPUT -p udp --dport 46655:46676 -j ACCEPT 
iptables -A OUTPUT -p udp --dport 46655:46676 -j ACCEPT 
iptables -A INPUT -p tcp --dport 9780:9790 -j ACCEPT 
iptables -A OUTPUT -p tcp --dport 9780:9790 -j ACCEPT 
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 
iptables -A INPUT -j DROP 

Это работает для меня, между 2 хозяевами.

+0

спасибо за ваш ответ, я имеют одинаковые порты, которые вы указали выше, и я все время их открывал, и он все еще не работает. В моей среде у меня есть две лезвия на одном шасси с Ip-связью (режим 1 настроен), когда eth0-интерфейс активен на обеих лезвиях, тогда все работает отлично. Когда eth0 активен на одном blade-сервере, а eth1 активен на других, то кластеризованные создаются, и через некоторое время он начинает бросать «не получилось сердцебиение» исключение, и никакой процесс не покидает кластер даже длительный период времени (часы) –

0

Что такое режим 1 снова? Отказоустойчивость я предполагаю? Не верно ли выравнивание нагрузки? Возможно, вам нужно использовать iptables -i INTF, где INTF является либо eth0, либо eth1? Я не эксперт в iptables, но, возможно, вам нужно определить логическое имя, например. iptables -i bond0? Я предлагаю использовать wirehark, чтобы узнать, какие пакеты получены и/или включить отладку DROP в iptables в обоих случаях.

+0

Режим 1 = отказоустойчивые. Обнаружено, что мы блокируем пакеты IGMP. Обновлен брандмауэр, чтобы разрешить IGMP. Кстати, с RHEL.Однако мы до сих пор видим сообщения heartbeat из FD_ALL, как описано выше, но теперь только во время загрузки. Время в сообщении продолжает увеличиваться каждые 2 секунды, но узел не оставляет кластера. Мы не получаем сообщение об этом, оставляя кластер в любом случае. Должен ли он быть удален из кластера, если сообщения о сердцебиении видны для узла в течение нескольких минут на основе конфигурации выше? Когда узел перезапускается, он не может присоединиться к кластеру. Он формирует отдельный кластер только с собой. –

+0

Любые предложения? –

1

В моей среде, у меня есть два лезвия на одном шасси с Ip связи (режим 1 сконфигурирован), когда интерфейс eth0 активен на обе лопатки, то все работает отлично. Когда eth0 активен на одном лезвии, а eth1 активен на других кластеризованных созданиях, и через некоторое время начинает бросать исключение «не получил сердцебиение», а процесс оставляет кластер даже на длительный период времени (часы)

Там эта ошибка в JGroups может быть связано с вашей проблемой: Don't receive heartbeat in Nic Teaming configuration after NIC switch

Обход: переключение на TCP.

Смотрите также:

0

Это происходит из-за переключения UDP пакеты падают из-за пределов, определенных на коммутаторе для UDP пакетов ...

Смежные вопросы