I am testing CCR and I have some doubts about its operation.
When defining a remote cluster, according to the documentation, 3 default connections to selected gateway nodes are established.
I understand that these connections have the function of recovering remote cluster state.
Are these connections used for something else?
Is it necessary to increase them according to the number of nodes in the local/remote cluster?
On the other hand, when creating a follower, the initial remote recovery of the segments and
subsequent requests for new operations, uses its own transport connection between nodes holding the involved shards? is this correct?
I would appreciate if someone can clarify how the nodes interconnect during the CCR,
Thanks for the interest in CCR @javierE. Let me try to clarify a few aspects.
Let's start by defining some terms. We have a local cluster, and a remote cluster. The local cluster will be establishing remote cluster connections to the remote cluster. Within the remote cluster, we have seed nodes, and gateway nodes.
Seed nodes are nodes in the remote cluster that nodes in the local cluster connect to to obtain the cluster state of the remote cluster for the purpose of discovering the topology of the remote cluster. This topology is used to discover in particular which nodes are gateway nodes, the nodes in the remote cluster that nodes in the local cluster will connect to for the purpose of making requests to the remote cluster. By default, each node in the local cluster that is capable of making connections t the remote cluster will connect to three gateway nodes in the remote cluster.
So to clarify then, it's the seed nodes that are used to recover the remote cluster state. It's the gateway nodes that are used to coordinate requests from the local cluster to the remote cluster.
Think of gateway nodes in the remote cluster as coordinating nodes in any cluster. You would scale them based on the amount of clients that you have connecting and making requests through these nodes, and the type of traffic that they are passing through these nodes. In the context of CCR, it means that initial recovery of segments, and subsequents indexing operations would pass through these nodes, so you'd want these gateway nodes to be capable of handling your expected traffic here.
Not quite. If the local node performing the initial remote recovery for a given shard has a remote connection to the node in the remote cluster that holds the corresponding primary then that connection will be used directly, otherwise the recovery will pass through a gateway node which serves as a proxy to the node in the remote cluster that holds the corresponding primary shard.