-
Notifications
You must be signed in to change notification settings - Fork 24.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[DOCS] add details on version compatibility and remote gateway selection #40056
Changes from 18 commits
59b9fda
f63de4f
a76f368
cedeb0d
63fade9
d35bbaf
6c126f2
5122355
371f89f
0d50984
f1ef469
980017f
d458d56
7ee104d
d021c15
7ef7138
d9419d4
6ab8f72
2ba8edc
5ef3786
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,24 +14,65 @@ connections to a remote cluster. This functionality is used in | |
endif::[] | ||
|
||
Remote cluster connections work by configuring a remote cluster and connecting | ||
only to a limited number of nodes in the remote cluster. Each remote cluster is | ||
referenced by a name and a list of seed nodes. When a remote cluster is | ||
registered, its cluster state is retrieved from one of the seed nodes so that by | ||
default up to three _gateway nodes_ are selected to be connected to as part of | ||
remote cluster requests. Remote cluster connections consist of uni-directional | ||
connections from the coordinating node to the previously selected remote nodes | ||
only. You can tag which nodes should be selected by using node attributes (see <<remote-cluster-settings>>). | ||
only to a limited number of nodes in that remote cluster. Each remote cluster | ||
is referenced by a name and a list of seed nodes. When a remote cluster is | ||
registered, its cluster state is retrieved from one of the seed nodes and up | ||
to three _gateway nodes_ are selected to be connected to as part of remote | ||
cluster requests. All the communication required between different clusters | ||
goes through the <<modules-transport,transport layer>>. Remote cluster | ||
connections consist of uni-directional connections from the coordinating | ||
node to the selected remote _gateway nodes_ only. By default each node in | ||
a cluster that has remote clusters configured connects to one or more remote | ||
_gateway nodes_ and uses them to federate requests to the remote cluster. | ||
javanna marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Each node in a cluster that has remote clusters configured connects to one or | ||
more _gateway nodes_ and uses them to federate requests to the remote cluster. | ||
[float] | ||
[[gateway-nodes-selection]] | ||
=== Gateway nodes selection | ||
|
||
The _gateway nodes_ selection depends on the following criteria: | ||
|
||
- *version*: Remote nodes must be compatible with the cluster they are | ||
registered to. This is subject to the same rules as <<rolling-upgrades>>. | ||
Any node can communicate with any other node on the same major version (e.g. | ||
6.0 can talk to any 6.x node). Only nodes on the last minor version of a | ||
certain major version can communicate with nodes on the following major | ||
version (e.g. 6.7 can communicate with 7.0, as well as any 7.x node, while | ||
6.6 or earlier cannot talk to any 7.x node). Note that version compatibility | ||
is symmetric, meaning that if 6.7 can communicate with 7.0, 7.0 can also | ||
communicate with 6.7. The matrix below summarizes compatibility as described | ||
above. | ||
|
||
[cols="^,^,^,^,^,^"] | ||
|==== | ||
| Compatibility | 5.0->5.5 | 5.6 | 6.0->6.6 | 6.7 | 7.x | ||
| 5.0->5.5 | Yes | Yes | No | No | No | ||
| 5.6 | Yes | Yes | Yes | Yes | No | ||
| 6.0->6.6 | No | Yes | Yes | Yes | No | ||
| 6.7 | No | Yes | Yes | Yes | Yes | ||
| 7.x | No | No | No | Yes | Yes | ||
|==== | ||
|
||
NOTE: If you want to connect incompatible clusters on subsequent major | ||
versions, you can add one or | ||
more <<coordinating-only-node,coordinating only nodes>> on the intermediate | ||
version to the cluster on the lower version, since they support communicating with both ends. For instance, a 7.0 | ||
cluster can communicate with 6.6 or earlier nodes as long as at least one 6.7 | ||
_gateway node_ is present in their cluster. Beware that only features | ||
supported by the lower version can be used in that case. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I will remove this note, I got feedback that it may be problematic for CCR and I also find it a bit confusing. |
||
|
||
- *role*: Dedicated master nodes never get selected. | ||
- *attributes*: You can tag which nodes should be selected | ||
(see <<remote-cluster-settings>>), though such tagged nodes still have | ||
to satisfy the two above requirements. | ||
|
||
[float] | ||
[[configuring-remote-clusters]] | ||
=== Configuring remote clusters | ||
|
||
You can configure remote clusters globally by using | ||
<<cluster-update-settings,cluster settings>>, which you can update dynamically. | ||
Alternatively, you can configure them locally on individual nodes by using the `elasticsearch.yml` file. | ||
Alternatively, you can configure them locally on individual nodes by using the | ||
`elasticsearch.yml` file. | ||
|
||
If you specify the settings in `elasticsearch.yml` files, only the nodes with | ||
those settings can connect to the remote cluster. In other words, functionality | ||
|
@@ -59,7 +100,8 @@ between local and remote indices. | |
For more information about the optional transport settings, see | ||
<<modules-transport>>. | ||
|
||
If you use <<cluster-update-settings,cluster settings>>, the remote clusters are available on every node in the cluster. For example: | ||
If you use <<cluster-update-settings,cluster settings>>, the remote clusters | ||
are available on every node in the cluster. For example: | ||
|
||
[source,js] | ||
-------------------------------- | ||
|
@@ -211,4 +253,5 @@ PUT _cluster/settings | |
|
||
You can use the <<cluster-remote-info, remote cluster info API>> to retrieve | ||
information about the configured remote clusters, as well as the remote nodes | ||
that the node is connected to. | ||
that the node is connected to. This is particularly useful to verify which | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The API reference information (https://www.elastic.co/guide/en/elasticsearch/reference/master/cluster-remote-info.html) implies that "connected" is true/false. Is that correct or does it list the gateway nodes? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. very good point. we do return a list of nodes but it's the list of seed nodes apparently rather than the selected gateway nodes, I need to adapt this then. Thanks for noticing! |
||
nodes got selected according to the <<gateway-nodes-selection>>. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is unclear at this point in the page whether those three gateway nodes are used permanently or just for a particular request or whether the selection can change over time...?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They are used for all CCR and CCS requests from then on. The selection may change if one or more of those nodes are shut down, in that case they will get replaced.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, I think we should add that piece of info here.