2014-11-05 199 views
1

当使用JGroups,使用Infinispan等组件时,需要在防火墙中打开哪些端口?Infinispan jgroups防火墙端口

我的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> 

现在,我有如下的防火墙开放的端口(链INPUT(政策接受))

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

感谢您的回复,我打开上面指定的相同端口,并且我一直打开它,但它仍然无法工作。在我的环境中,当两个刀片上的eth0接口处于活动状态时,我在同一个机箱上安装了带有Ip绑定(已配置模式1)的两个刀片,然后一切正常。当eth0的是活跃在一个刀片和eth1是活跃在其他群集,然后获得创建和一段时间后它开始抛出“没有收到心跳”异常并没有进程离开集群甚至很长一段时间(小时) – 2014-11-06 16:58:52

0

什么是模式1呢?故障转移我认为?没有负载平衡的权利? 也许你需要使用iptables -i INTF,其中INTF是eth0或eth1?我不是iptables的专家,但也许你需要定义逻辑名,例如iptables -i bond0? 我建议使用wireshark来查看哪些数据包已被接收和/或在两个盒子上的iptables中启用DROP的调试。

+0

模式1 =故障转移。发现我们阻止了IGMP数据包。更新防火墙以允许IGMP。顺便使用RHEL。但是,我们仍然看到如上所述的来自FD_ALL的心跳消息,但现在只在加载期间。消息中的时间每2秒持续增加,但节点似乎不会离开群集。我们没有收到任何关于它离开群集的消息。根据上面的配置,如果在节点上看到心跳消息的分钟数,是否应该从群集中删除?当节点重新启动时,它不能加入群集。它与自己形成独立的群集。 – 2014-11-13 16:58:39

+0

有什么建议吗? – 2014-11-13 16:59:30

1

在我的环境,我有叶接合 相同的底盘上的两个叶片(模式1构造)时eth0接口是在两个刀片活性然后 一切工作完全。当eth0的是活跃在一个刀片和eth1 是活跃在其他群集,然后获得创建和一段时间后它 开始扔“还没有收到心跳”异常并没有进程 离开集群的时间甚至更长周期(小时)

有一个在JGroups的这个bug可以与您的问题有关:Don't receive heartbeat in Nic Teaming configuration after NIC switch

解决方法:切换到TCP。

参见:

0

这是发生由于开关滴速因为对开关的UDP数据包定义的限制UDP包...

相关问题