我正在设置 Apache Ingine 服务器集群,我使用下面的代码,
ipFinder.setAddresses(Arrays.asList("10.154.8.208","10.154.8.121:3389","127.0.0.1:47500..47509"));
如果我运行 Java 代码 n
次,n
台服务器启动,使用 IP 地址及其默认/特定端口之一出现在 IP 列表中地址。
我希望 Java 代码能够找到启动的 IP 和端口服务器。请帮助我找到这些值。
下面是我正在使用的示例代码,
public class IgniteClientStaticIP {
public static void main(String[] args) {
TcpDiscoverySpi spi = new TcpDiscoverySpi();
TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder();
ipFinder.setAddresses(Arrays.asList("10.154.8.208","10.154.8.121:3389","127.0.0.1:47500..47509"));
spi.setIpFinder(ipFinder);
IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setPeerClassLoadingEnabled(true);
cfg.setDiscoverySpi(spi);
Ignite ignite = Ignition.start(cfg);
IgniteCompute igniteCompute = ignite.compute();
igniteCompute.broadcast(() -> System.out.println("Hello World"));
}
}
最佳答案
如Denis表明这不是您通常需要做的事情。然而,我见过有必要的情况,包括自动化负载平衡器或防火墙规则。因此,带着这个警告......
您可以使用ClusterNode
类获取有关节点的信息。好吧,在本例中,TcpDiscoveryNode
是 ClusterNode 的更具体版本。
这是 Scala,但您应该了解要点:
scala> ignite.cluster.nodes.asScala.flatMap { case x : TcpDiscoveryNode => Some(x.socketAddresses) case _ => None }
res5: Iterable[java.util.Collection[java.net.InetSocketAddress]] = ArrayBuffer([XX/192.168.1.89:47501, /0:0:0:0:0:0:0:1%lo0:47501, /127.0.0.1:47501], [XX/192.168.1.89:47500, /0:0:0:0:0:0:0:1%lo0:47500, /127.0.0.1:47500])
关于java - 如何在 Apache Ignite 中查找正在运行的服务器或客户端 IP 及其端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57902530/