Skip to content

Commit 0c64386

Browse files
committed
[DOCS] add details on version compatibility and remote gateway selection (#40056)
This commit clarifies how the gateway selection works when configuring remote clusters for CCR or CCS. Specifically, it clarifies compatibility between different versions which is a very common question.
1 parent 09115a0 commit 0c64386

File tree

2 files changed

+57
-25
lines changed

2 files changed

+57
-25
lines changed

docs/reference/modules/cross-cluster-search.asciidoc

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
The _{ccs}_ feature allows any node to act as a federated client across
55
multiple clusters. A {ccs} node won't join the remote cluster, instead
66
it connects to a remote cluster in a light fashion in order to execute
7-
federated search requests.
7+
federated search requests. For details on communication and compatibility
8+
between different clusters, see <<modules-remote-clusters>>.
89

910
[float]
1011
=== Using {ccs}
@@ -43,7 +44,8 @@ PUT _cluster/settings
4344
// TEST[s/127.0.0.1:9300/\${transport_host}/]
4445

4546
To search the `twitter` index on remote cluster `cluster_one` the index name
46-
must be prefixed with the cluster alias separated by a `:` character:
47+
must be prefixed with the alias of the remote cluster followed by the `:`
48+
character:
4749

4850
[source,js]
4951
--------------------------------------------------
@@ -104,7 +106,7 @@ GET /cluster_one:twitter/_search
104106
// TESTRESPONSE[s/"_score": 1/"_score": "$body.hits.hits.0._score"/]
105107

106108

107-
Indices can also be searched with the same name on different clusters:
109+
Indices with the same name on different clusters can also be searched:
108110

109111
[source,js]
110112
--------------------------------------------------
@@ -120,10 +122,10 @@ GET /cluster_one:twitter,twitter/_search
120122
// CONSOLE
121123
// TEST[continued]
122124

123-
Search results are disambiguated the same way as the indices are disambiguated in the request. Even if index names are
124-
identical these indices will be treated as different indices when results are merged. All results retrieved from a
125-
remote index
126-
will be prefixed with their remote cluster name:
125+
Search results are disambiguated the same way as the indices are disambiguated in the request.
126+
Indices with same names are treated as different indices when results are merged. All results
127+
retrieved from an index located in a remote cluster are prefixed with their corresponding
128+
cluster alias:
127129

128130
[source,js]
129131
--------------------------------------------------
@@ -185,10 +187,11 @@ will be prefixed with their remote cluster name:
185187
[float]
186188
=== Skipping disconnected clusters
187189

188-
By default all remote clusters that are searched via {ccs} need to be available when
189-
the search request is executed, otherwise the whole request fails and no search results are returned
190-
despite some of the clusters are available. Remote clusters can be made optional through the
191-
boolean `skip_unavailable` setting, set to `false` by default.
190+
By default, all remote clusters that are searched via {ccs} need to be
191+
available when the search request is executed. Otherwise, the whole request
192+
fails; even if some of the clusters are available, no search results are
193+
returned. You can use the boolean `skip_unavailable` setting to make remote
194+
clusters optional. By default, it is set to `false`.
192195

193196
[source,js]
194197
--------------------------------
@@ -312,6 +315,3 @@ The <<search-request-body, search API>> supports the `ccs_minimize_roundtrips`
312315
parameter, which defaults to `true` and can be set to `false` in case
313316
minimizing network round-trips is not desirable.
314317

315-
Note that all the communication between the nodes, regardless of which cluster
316-
they belong to and the selected reduce mode, happens through the
317-
<<modules-transport,transport layer>>.

docs/reference/modules/remote-clusters.asciidoc

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,55 @@ connections to a remote cluster. This functionality is used in
1414
endif::[]
1515

1616
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.
2425

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.
2757

2858
[float]
2959
[[configuring-remote-clusters]]
3060
=== Configuring remote clusters
3161

3262
You can configure remote clusters globally by using
3363
<<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.
3566

3667
If you specify the settings in `elasticsearch.yml` files, only the nodes with
3768
those settings can connect to the remote cluster. In other words, functionality
@@ -59,7 +90,8 @@ between local and remote indices.
5990
For more information about the optional transport settings, see
6091
<<modules-transport>>.
6192

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:
6395

6496
[source,js]
6597
--------------------------------

0 commit comments

Comments
 (0)