This is an automated email from the ASF dual-hosted git repository. abudnikov pushed a commit to branch IGNITE-7595 in repository https://gitbox.apache.org/repos/asf/ignite.git
commit 6c28f14504e7ecd13fc9b2243907987c03e9010a Author: abudnikov <[email protected]> AuthorDate: Fri Aug 14 18:45:04 2020 +0300 add running nodes behind nat page --- .../running-client-nodes-behind-nat.adoc | 33 ++++++++++++++++++++++ .../java/org/apache/ignite/snippets/Discovery.java | 26 +++++++++++++++++ docs/_docs/code-snippets/xml/client-behind-nat.xml | 28 ++++++++++++++++++ 3 files changed, 87 insertions(+) diff --git a/docs/_docs/clustering/running-client-nodes-behind-nat.adoc b/docs/_docs/clustering/running-client-nodes-behind-nat.adoc new file mode 100644 index 0000000..55d5703 --- /dev/null +++ b/docs/_docs/clustering/running-client-nodes-behind-nat.adoc @@ -0,0 +1,33 @@ += Running Client Nodes Behind NAT + +If your client nodes are deployed behind a NAT, the server nodes won't be able to establish connection with the clients because of the limitations of the communication protocol. +This includes deployment cases when client nodes are running in virtual environments (like Kubernetes) and the server nodes are deployed elsewhere. + +For cases like this, you need to enable a special mode of communication: + +[tabs] +-- +tab:XML[] + +[source, xml] +---- +include::code-snippets/xml/client-behind-nat.xml[tags=ignite-config;!discovery,indent=0] +---- +tab:Java[] +[source, java] +---- +include::{javaCodeDir}/Discovery.java[tags=client-behind-nat,indent=0] +---- +tab:C#/.NET[] + +tab:C++[unsupported] +-- + +== Limitations + +* This mode cannot be used when `TcpCommunicationSpi.usePairedConnections = true` on both server and client nodes. + +* Peer class loading for link:key-value-api/continuous-queries[continuous queries (transformers and filters)] does not work when a continuous query is started from a client node `forceClientToServerConnections = true`. +You will need to add the corresponding classes to the classpath of every server node. + +* This property can only be used on client nodes. This limitation will be addressed in the future releases. diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/Discovery.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/Discovery.java new file mode 100644 index 0000000..adf3e35 --- /dev/null +++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/Discovery.java @@ -0,0 +1,26 @@ +package org.apache.ignite.snippets; + +import org.apache.ignite.Ignite; +import org.apache.ignite.Ignition; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi; +import org.junit.jupiter.api.Test; + +public class Discovery { + + @Test + void clientsBehindNat() { + + //tag::client-behind-nat[] + IgniteConfiguration cfg = new IgniteConfiguration(); + + cfg.setClientMode(true); + + cfg.setCommunicationSpi(new TcpCommunicationSpi().setForceClientToServerConnections(true)); + + //end::client-behind-nat[] + try(Ignite ignite = Ignition.start(cfg)) { + + } + } +} diff --git a/docs/_docs/code-snippets/xml/client-behind-nat.xml b/docs/_docs/code-snippets/xml/client-behind-nat.xml new file mode 100644 index 0000000..4fa51cd --- /dev/null +++ b/docs/_docs/code-snippets/xml/client-behind-nat.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> + <!-- tag::ignite-config[] --> + <bean class="org.apache.ignite.configuration.IgniteConfiguration"> + <property name="clientMode" value="true"/> + <property name="communicationSpi"> + <bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi"> + <property name="forceClientToServerConnections" value="true"/> + </bean> + </property> + <!-- tag::discovery[] --> + <property name="discoverySpi"> + <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> + <property name="ipFinder"> + <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"> + <property name="addresses"> + <list> + <value>127.0.0.1:47500..47509</value> + </list> + </property> + </bean> + </property> + </bean> + </property> + <!-- end::discovery[] --> + </bean> + <!-- end::ignite-config[] --> +</beans> \ No newline at end of file
