IP组播在GridGain中不起作用

时间:2014-02-10 09:40:44

标签: java gridgain

如果我使用默认的GridTcpDiscoveryMulticastIpFinder,GridGain节点不会互相发现。

如何设置?

1 个答案:

答案 0 :(得分:1)

通常,当节点无法看到对方时,意味着IP多播未在网络上正常运行。让IP组播正常工作有时可能是一项挑战。 GridGain网格使用IP多播来查找节点发现的IP地址。 GridTcpDiscoveryMulticastIpFinder是默认的IP Finder。

启用IP多播时,以下提示可能很有用:

<强>地址

  • IP多播使用224.0.0.0239.255.255.255
  • 之间的地址
  • 不应使用地址[0-9].0.0.1

<强>防火墙

大多数操作系统都默认配置了软件防火墙。如果您已经有硬件防火墙,那么很可能您不需要操作系统附带的防火墙。尝试禁用它,看看IP Multicast是否开始工作。

如果无法禁用操作系统防火墙,则应将防火墙配置为接受并正确路由IP多播数据包。

SELinux和iptables

我们注意到至少在Fedora Core 9中,多播不适用于默认的SELinux配置。因此,要使其正常工作,您需要正确配置SELinux或更好地禁用它。

此外,如果您的计算机没有直接暴露在互联网上(位于路由器或防火墙后面),我们建议您在Linux上禁用iptablesip6tables服务。

添加IP多播路由

系统应至少有一条IP多播流量路由。您可以为所有多播流量添加路由以使用正确的(Linux示例):

route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

请注意,如果有多个IP多播应用程序,则需要为特定的IP多播地址配置路由。

IPv4和IPv6

如果您的操作系统启用了IPv6,则Java应用程序可能会尝试通过IPv6路由IP多播流量。使用java.net.preferIPv4Stack=true系统属性来阻止这种情况。

本地网络

如果您没有安装网络,那么很可能您的IP多播数据包将路由到您的ISP路由器,这可能会阻止它们。尝试在本地盒子上启用环回IP多播,因此在本地盒子上启动的多个网格节点可以互相看到。

多个界面

JGroups主要注意到这个问题。尝试将您的IP地址添加到操作系统上的hosts文件(例如Unix / Linux上的/etc/hosts/)并重新启动网络。另外,在JGroups配置文件或GridTcpDiscoverySpi中将本地IP地址指定为本地绑定配置参数,具体取决于您用于启动网格的SPI。