Infinispan jgroups防火墙端口

时间:2014-11-05 19:08:57

标签: jboss firewall ports infinispan jgroups

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

我的JGroups配置文件是:

    <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它会正常工作 提前致谢

4 个答案:

答案 0 :(得分: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个主机之间。

答案 1 :(得分:1)

  

在我的环境中,我在同一机箱上有两个刀片,并且有Ip绑定   (当配置模式1时)当两个刀片上的eth0接口处于活动状态时   一切都很完美。当eth0在一个刀片和eth1上处于活动状态时   在其他集群的get创建并且在一段时间之后处于活动状态   开始投掷“没有收到心跳”的例外,没有进程   离开群集甚至很长一段时间(小时)

JGroups 中的此错误可能与您的问题相关联:Don't receive heartbeat in Nic Teaming configuration after NIC switch

解决方法:切换到TCP。

另见:

答案 2 :(得分:0)

又是什么模式1?故障转移我假设?不负载均衡吗? 也许您需要使用iptables -i INTF,其中INTF是eth0或eth1?我不是iptables的专家,但您可能需要定义逻辑名称,例如: iptables -i bond0? 我建议使用wireshark查看接收的数据包和/或在两个框中的iptables中启用DROP的调试。

答案 3 :(得分:0)

这是由于交换机丢弃UDP数据包而发生的,因为UDP数据包的交换机定义了限制......