[[remote-clusters-settings]]
=== Remote cluster settings
The following settings apply to both <<sniff-mode,sniff mode>> and
<<proxy-mode,proxy mode>>. Settings that are specific to sniff mode and proxy
mode are described separately.

`cluster.remote.<cluster_alias>.mode`::
  The mode used for a remote cluster connection. The only supported modes are
  `sniff` and `proxy`.

`cluster.remote.initial_connect_timeout`::

  The time to wait for remote connections to be established when the node
  starts. The default is `30s`.

`remote_cluster_client` <<node-roles,role>>::

  By default, any node in the cluster can act as a cross-cluster client and
  connect to remote clusters. To prevent a node from connecting to remote
  clusters, specify the <<node-roles,node.roles>> setting in `elasticsearch.yml`
  and exclude `remote_cluster_client` from the listed roles. Search requests
  targeting remote clusters must be sent to a node that is allowed to act as a
  cross-cluster client. Other features such as {ml} <<general-ml-settings,data
  feeds>>, <<general-transform-settings,transforms>>, and
  <<ccr-getting-started-tutorial,{ccr}>> require the `remote_cluster_client` role.

`cluster.remote.<cluster_alias>.skip_unavailable`::

  Per cluster boolean setting that allows to skip specific clusters when no
  nodes belonging to them are available and they are the target of a remote
  cluster request. Default is `false`, meaning that all clusters are mandatory
  by default, but they can selectively be made optional by setting this setting
  to `true`.

`cluster.remote.<cluster_alias>.transport.ping_schedule`::

  Sets the time interval between regular application-level ping messages that
  are sent to try and keep remote cluster connections alive. If set to `-1`,
  application-level ping messages to this remote cluster are not sent. If
  unset, application-level ping messages are sent according to the global
  `transport.ping_schedule` setting, which defaults to `-1` meaning that pings
  are not sent. It is preferable to correctly configure TCP keep-alives instead
  of configuring a `ping_schedule`, because TCP keep-alives are handled by the
  operating system and not by {es}. By default {es} enables TCP keep-alives on
  remote cluster connections. Remote cluster connections are transport
  connections so the `transport.tcp.*` <<transport-settings,advanced settings>>
  regarding TCP keep-alives apply to them.

`cluster.remote.<cluster_alias>.transport.compress`::

  Per cluster setting that enables you to configure compression for requests
  to a specific remote cluster. This setting impacts only requests
  sent to the remote cluster. If the inbound request is compressed,
  Elasticsearch compresses the response. The setting options are `true`,
  `indexing_data`, and `false`. If unset, the global `transport.compress` is
  used as the fallback setting.

`cluster.remote.<cluster_alias>.transport.compression_scheme`::

  Per cluster setting that enables you to configure compression scheme for
  requests to a specific remote cluster. This setting impacts only requests
  sent to the remote cluster. If an inbound request is compressed, {es}
  compresses the response using the same compression scheme. The setting options
  are `deflate` and `lz4`. If unset, the global `transport.compression_scheme`
  is used as the fallback setting.


`cluster.remote.<cluster_alias>.credentials` (<<secure-settings,Secure>>)::

beta:[]
  Per cluster setting for configuring <<remote-clusters-api-key,remote clusters with the API Key based model>>.
  This setting takes the encoded value of a
  <<security-api-create-cross-cluster-api-key,cross-cluster API key>> and must be set
  in the <<secure-settings,{es} keystore>> on each node in the cluster.
  The presence (or not) of this setting determines which model a remote cluster uses.
  If present, the remote cluster uses the API key based model.
  Otherwise, it uses the certificate based model.

[[remote-cluster-sniff-settings]]
==== Sniff mode remote cluster settings

`cluster.remote.<cluster_alias>.seeds`::

  The list of seed nodes used to sniff the remote cluster state.

`cluster.remote.<cluster_alias>.node_connections`::

  The number of gateway nodes to connect to for this remote cluster. The default
  is `3`.

[[cluster-remote-node-attr]]
`cluster.remote.node.attr`::

  A node attribute to filter out nodes that are eligible as a gateway node in
  the remote cluster. For instance a node can have a node attribute
  `node.attr.gateway: true` such that only nodes with this attribute will be
  connected to if `cluster.remote.node.attr` is set to `gateway`.

[[remote-cluster-proxy-settings]]
==== Proxy mode remote cluster settings

`cluster.remote.<cluster_alias>.proxy_address`::

  The address used for all remote connections.

`cluster.remote.<cluster_alias>.proxy_socket_connections`::

  The number of socket connections to open per remote cluster. The default is
  `18`.

[role="xpack"]
`cluster.remote.<cluster_alias>.server_name`::

  An optional hostname string which is sent in the `server_name` field of
  the TLS Server Name Indication extension if
  <<encrypt-internode-communication,TLS is enabled>>. The TLS transport will fail to open
  remote connections if this field is not a valid hostname as defined by the
  TLS SNI specification.
