|
@@ -14,16 +14,46 @@ 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.
|
|
|
|
|
|
-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
|
|
|
+|====
|
|
|
+
|
|
|
+- *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]]
|
|
@@ -31,7 +61,8 @@ more _gateway nodes_ and uses them to federate requests to the remote cluster.
|
|
|
|
|
|
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 +90,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]
|
|
|
--------------------------------
|