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.