Hello I am trying to setup Ignite cluster on Docker / Windows server 2019 with NAT networking. Configuration is simplified to the following:
* 2 hosts, each hosting a single docker container with a single Ignite server running. * Client, communication and discovery ports are 'mapped' from the container to the host, on default ports This is summarized in the picture below: [Diagram Description automatically generated with medium confidence] First question is: Can ignite cluster be run on such network topology ? Address resolver does not seem to be taken in account by the discovery Spi. >From the documentation I understand that 'internal IP / host name' should be >used in TcpDiscoverySpi, This is the addressResolver configuration used in both cases: <property name="addressResolver"> <bean class="org.apache.ignite.configuration.BasicAddressResolver"> <constructor-arg> <map> <entry key="192.168.0.10" value="host1 "/> <entry key="192.168.100.11" value="host2"/> </map> </constructor-arg> </bean> </property> If container address is used in the discoverySpi configuration, the server topology does not build up, and nodes do not contact each other: Ex: <property name="discoverySpi"> <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> <property name="localPort" value="47597" /> <property name="localPortRange" value="0" /> <property name="ipFinder"> <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"> <property name="addresses"> <list> <value>192.168.0.10:47597</value> <value>192.168.100.11:47597</value> </list> </property> </bean> </property> </bean> </property> If host address is used in the discoverySpi configuration, the server topology builds up, but the cluster ends in communication error: Ex: <property name="discoverySpi"> <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> <property name="localPort" value="47597" /> <property name="localPortRange" value="0" /> <property name="ipFinder"> <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"> <property name="addresses"> <list> <value>host1:47597</value> <value>host2:47597</value> </list> </property> </bean> </property> </bean> </property> Extract from log: Start ok: [17:24:46] Ignite node started OK (id=2a26fccc) [17:24:46] Topology snapshot [ver=2, locNode=2a26fccc, servers=2, clients=0, state=ACTIVE, CPUs=4, offheap=0.5GB, heap=2.0GB] [17:24:46] ^-- Baseline [id=0, size=2, online=2, offline=0] And, after some time, on both nodes: [19:34:05,549][SEVERE][grid-nio-worker-tcp-comm-1-#24%TcpCommunicationSpi%][TcpCommunicationSpi] Failed to process selector key ( ... more info) java.io.IOException: An existing connection was forcibly closed by the remote host at sun.nio.ch.SocketDispatcher.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43) at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) at sun.nio.ch.IOUtil.read(IOUtil.java:192) at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379) at org.apache.ignite.internal.util.nio.GridNioServer$DirectNioClientWorker.processRead(GridNioServer.java:1337) at org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.processSelectedKeysOptimized(GridNioServer.java:2494) at org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2259) at org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1896) at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120) at java.lang.Thread.run(Thread.java:750) Is there any configuration that could make this setup work ? Best regards, Xavier "FINASTRA" is the trade name of the FINASTRA group of companies. This email and any attachments have been scanned for known viruses using multiple scanners. This email message is intended for the named recipient only. It may be privileged and/or confidential. If you are not the named recipient of this email please notify us immediately and do not copy it or use it for any purpose, nor disclose its contents to any other person. This email does not constitute the commencement of legal relations between you and FINASTRA. Please refer to the executed contract between you and the relevant member of the FINASTRA group for the identity of the contracting party with which you are dealing.