Search code examples
ignite

Does Apache Ignite client communicate with other Ignite client?


We have a cluster of ignite server nodes. Also we have multiple ignite nodes running in client mode. We see that ignite client is listening to 47100 and 10800. Due to some issue, we dont want unknown connections to these ports, so we allowed only ignite server ips to access the port that opened in ignite client.

Trying to understand whether ignite client also communicates with other ignite client to share any info or for topology change etc...


Solution

    • 47100..47199 are default ports for TcpCommunicationSpi protocol, which is used to communicate between nodes (both server and client nodes): perform cache operations, transactions, etc. You should not block them.
    • 10800..10899 are default ports for incoming thin client / JDBC / ODBC connections (not client nodes). And, yes, thin client can be connected to a client node. If such thin clients are undesired, you can disable thin client connector by setting ClientConnectorConfiguration to null in IgniteConfiguration. More details can be found here.

    Note about direct client connections

    Trying to understand whether ignite client also communicates with other ignite client to share any info or for topology change etc...

    Most of time client nodes communicate only with server ones, because client node does not store data. But direct connections between client nodes are possible in some cases, for example, when performing compute operations. Code below leads to establishing direct communications between clients (client is supposed to be a client node):

    ClusterGroup clients = client.cluster().forClients();
    
    // Client calls compute API over cluster group, which includes only clients.
    client.compute(clients).broadcast(() -> System.out.println(">>>>>> Run on client"));