java - IP 多播在 GridGain 中不起作用

标签 java gridgain

如果我使用 GridTcpDiscoveryMulticastIpFinder,GridGain 节点不会发现彼此,这是默认值。

如何设置?

最佳答案

通常,当节点无法看到彼此时,意味着 IP 多播无法在您的网络上正常工作。让 IP 多播正常工作有时可能是一个挑战。 GridGain 网格使用 IP 多播来查找 IP 地址以进行节点发现。 GridTcpDiscoveryMulticastIpFinder 是默认的 IP 查找器。

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

地址

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

防火墙

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

如果无法禁用操作系统防火墙,则应将防火墙配置为接受并正确路由 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 多播,以便在本地机器上启动的多个网格节点可以互相看到。

多个接口(interface)

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

关于java - IP 多播在 GridGain 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21673561/

相关文章:

java - Apache Ignite 中的 session 写入超时问题

debian - 另一个 "Could not find or load main class package"Java 错误

Java - ArrayList 构造函数的线程安全

java - 将 Java AES 加密转换为 PHP

h2 - H2数据库在Apache Ignite中的作用

java - 为您的应用程序启用网格/集群的最佳 Java 库是什么?

eclipse 中的 java.lang.NoSuchFieldError : IBM_JAVA error while running hadoop 2. 2.0

java - 尝试通过代理创建 HttpsURLConnection 时出现错误

ignite - 从胖客户端提交 ignite 计算作业以 ignite 网格