[[remote-cluster-network-settings]]
==== Advanced remote cluster (API key based model) settings

Use the following advanced settings to configure the remote cluster interface (API key based model)
independently of the <<transport-settings,transport interface>>. You can also
configure both interfaces together using the <<common-network-settings,network settings>>.

`remote_cluster_server.enabled`::
(<<static-cluster-setting,Static>>, boolean)
Determines whether the remote cluster server should be enabled. This setting must
be `true` for `remote_cluster.port` and all following remote cluster settings to
take effect. Enabling it allows the cluster to serve cross-cluster requests using
the API key based model. Defaults to `false`.

`remote_cluster.host`::
(<<static-cluster-setting,Static>>, string)
Sets the address of this node for remote cluster server traffic. The node will bind to this
address and will also use it as its remote cluster server publish address. Accepts an IP
address, a hostname, or a <<network-interface-values,special value>>.
Use this setting only if you require different configurations for the
remote cluster server and transport interfaces.
+
Defaults to the address given by `transport.bind_host`.

`remote_cluster.bind_host`::
(<<static-cluster-setting,Static>>, string)
The network address(es) to which the node should bind in order to listen for
incoming remote cluster connections. Accepts a list of IP addresses, hostnames, and
<<network-interface-values,special values>>. Defaults to the address given by
`remote_cluster.host`. Use this setting only if you require
to bind to multiple addresses or to use different addresses for publishing and
binding, and you also require different binding configurations for the
remote cluster server and transport interfaces.

`remote_cluster.publish_host`::
(<<static-cluster-setting,Static>>, string)
The network address at which the node can be contacted by other nodes. Accepts
an IP address, a hostname, or a <<network-interface-values,special value>>.
Defaults to the address given by `remote_cluster.host`.
Use this setting only if you require to bind to multiple addresses or to use
different addresses for publishing and binding, and you also require different
binding configurations for the remote cluster server and transport interfaces.

`remote_cluster.publish_port`::
(<<static-cluster-setting,Static>>, integer)
The port of the <<modules-network-binding-publishing,remote cluster server publish
address>>. Set this parameter only if you need the publish port to be
different from `remote_cluster.port`. Defaults to the port assigned via
`remote_cluster.port`.

`remote_cluster.tcp.keep_alive`::
(<<static-cluster-setting,Static>>, boolean)
Configures the `SO_KEEPALIVE` option for remote cluster sockets, which determines
whether they send TCP keepalive probes. Defaults to `transport.tcp.keep_alive`.

`remote_cluster.tcp.keep_idle`::
(<<static-cluster-setting,Static>>, integer)
Configures the `TCP_KEEPIDLE` option for transport sockets, which determines
the time in seconds that a connection must be idle before starting to send TCP
keepalive probes. Defaults to `transport.tcp.keep_idle` if set, or the system
default otherwise. This value cannot exceed `300` seconds. In cases where the
system default is higher than `300`, the value is automatically lowered to
`300`. Only applicable on Linux and macOS.

`remote_cluster.tcp.keep_interval`::
(<<static-cluster-setting,Static>>, integer)
Configures the `TCP_KEEPINTVL` option for transport sockets, which determines
the time in seconds between sending TCP keepalive probes. Defaults to
`transport.tcp.keep_interval` if set, or the system default otherwise. This value
cannot exceed `300` seconds. In cases where the system default is higher than
`300`, the value is automatically lowered to `300`. Only applicable on Linux
and macOS.

`remote_cluster.tcp.keep_count`::
(<<static-cluster-setting,Static>>, integer)
Configures the `TCP_KEEPCNT` option for transport sockets, which determines the
number of unacknowledged TCP keepalive probes that may be sent on a connection
before it is dropped. Defaults to `transport.tcp.keep_count` if set, or the
system default otherwise. Only applicable on Linux and macOS.

`remote_cluster.tcp.no_delay`::
(<<static-cluster-setting,Static>>, boolean)
Configures the `TCP_NODELAY` option on transport sockets, which determines
whether {wikipedia}/Nagle%27s_algorithm[TCP no delay] is enabled. Defaults to
`transport.tcp.no_delay`.

`remote_cluster.tcp.reuse_address`::
(<<static-cluster-setting,Static>>, boolean)
Configures the `SO_REUSEADDR` option for network sockets, which determines
whether the address can be reused or not. Defaults to
`transport.tcp.reuse_address`.

`remote_cluster.tcp.send_buffer_size`::
(<<static-cluster-setting,Static>>, <<byte-units,byte value>>)
The size of the TCP send buffer for transport traffic. Defaults to
`transport.tcp.send_buffer_size`.

`remote_cluster.tcp.receive_buffer_size`::
(<<static-cluster-setting,Static>>, <<byte-units,byte value>>)
The size of the TCP receive buffer for transport traffic. Defaults to
`transport.tcp.receive_buffer_size`.
