@@ -14,24 +14,55 @@ connections to a remote cluster. This functionality is used in
14
14
endif::[]
15
15
16
16
Remote cluster connections work by configuring a remote cluster and connecting
17
- only to a limited number of nodes in the remote cluster. Each remote cluster is
18
- referenced by a name and a list of seed nodes. When a remote cluster is
19
- registered, its cluster state is retrieved from one of the seed nodes so that by
20
- default up to three _gateway nodes_ are selected to be connected to as part of
21
- remote cluster requests. Remote cluster connections consist of uni-directional
22
- connections from the coordinating node to the previously selected remote nodes
23
- only. You can tag which nodes should be selected by using node attributes (see <<remote-cluster-settings>>).
17
+ only to a limited number of nodes in that remote cluster. Each remote cluster
18
+ is referenced by a name and a list of seed nodes. When a remote cluster is
19
+ registered, its cluster state is retrieved from one of the seed nodes and up
20
+ to three _gateway nodes_ are selected to be connected to as part of remote
21
+ cluster requests. All the communication required between different clusters
22
+ goes through the <<modules-transport,transport layer>>. Remote cluster
23
+ connections consist of uni-directional connections from the coordinating
24
+ node to the selected remote _gateway nodes_ only.
24
25
25
- Each node in a cluster that has remote clusters configured connects to one or
26
- more _gateway nodes_ and uses them to federate requests to the remote cluster.
26
+ [float]
27
+ [[gateway-nodes-selection]]
28
+ === Gateway nodes selection
29
+
30
+ The _gateway nodes_ selection depends on the following criteria:
31
+
32
+ - *version*: Remote nodes must be compatible with the cluster they are
33
+ registered to. This is subject to the same rules as <<rolling-upgrades>>.
34
+ Any node can communicate with any other node on the same major version (e.g.
35
+ 6.0 can talk to any 6.x node). Only nodes on the last minor version of a
36
+ certain major version can communicate with nodes on the following major
37
+ version (e.g. 6.7 can communicate with 7.0, as well as any 7.x node, while
38
+ 6.6 or earlier cannot talk to any 7.x node). Note that version compatibility
39
+ is symmetric, meaning that if 6.7 can communicate with 7.0, 7.0 can also
40
+ communicate with 6.7. The matrix below summarizes compatibility as described
41
+ above.
42
+
43
+ [cols="^,^,^,^,^,^"]
44
+ |====
45
+ | Compatibility | 5.0->5.5 | 5.6 | 6.0->6.6 | 6.7 | 7.x
46
+ | 5.0->5.5 | Yes | Yes | No | No | No
47
+ | 5.6 | Yes | Yes | Yes | Yes | No
48
+ | 6.0->6.6 | No | Yes | Yes | Yes | No
49
+ | 6.7 | No | Yes | Yes | Yes | Yes
50
+ | 7.x | No | No | No | Yes | Yes
51
+ |====
52
+
53
+ - *role*: Dedicated master nodes never get selected.
54
+ - *attributes*: You can tag which nodes should be selected
55
+ (see <<remote-cluster-settings>>), though such tagged nodes still have
56
+ to satisfy the two above requirements.
27
57
28
58
[float]
29
59
[[configuring-remote-clusters]]
30
60
=== Configuring remote clusters
31
61
32
62
You can configure remote clusters globally by using
33
63
<<cluster-update-settings,cluster settings>>, which you can update dynamically.
34
- Alternatively, you can configure them locally on individual nodes by using the `elasticsearch.yml` file.
64
+ Alternatively, you can configure them locally on individual nodes by using the
65
+ `elasticsearch.yml` file.
35
66
36
67
If you specify the settings in `elasticsearch.yml` files, only the nodes with
37
68
those settings can connect to the remote cluster. In other words, functionality
@@ -59,7 +90,8 @@ between local and remote indices.
59
90
For more information about the optional transport settings, see
60
91
<<modules-transport>>.
61
92
62
- If you use <<cluster-update-settings,cluster settings>>, the remote clusters are available on every node in the cluster. For example:
93
+ If you use <<cluster-update-settings,cluster settings>>, the remote clusters
94
+ are available on every node in the cluster. For example:
63
95
64
96
[source,js]
65
97
--------------------------------
0 commit comments