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.

Reply via email to