[英]How to find running server or client ip and its port in Apache Ignite
我正在設置Apache Ingine服務器的集群,正在使用以下代碼,
ipFinder.setAddresses(Arrays.asList("10.154.8.208","10.154.8.121:3389","127.0.0.1:47500..47509"));
如果我運行Java代碼n
次,則使用IP地址列表中存在的IP地址及其默認/特定端口之一啟動n
個服務器。
我希望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.
一個更特定的版本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])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.