mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-08 14:05:27 +00:00
The introductory sections of the reference manual contains some simplified instructions for adding a node to the cluster. Unfortunately they are a little too simplified and only really work for clusters running on `localhost`. If you try and follow these instructions for a distributed cluster then the new node will, confusingly, auto-bootstrap itself into a distinct one-node cluster. Multiple nodes running on localhost is a valid config, of course, but we should spell out that these instructions are really only for experimentation and that it takes a bit more work to add nodes to a distributed cluster. This commit does so. Also, the "important config" instructions for discovery say that you MUST set `discovery.seed_hosts` whereas in fact it is fine to ignore this setting and use a dynamic discovery mechanism instead. This commit weakens this statement and links to the docs for dynamic discovery mechanisms. Finally, this section is also overloaded with some technical details that are not important for this context and are adequately covered elsewhere, and completely fails to note that the default discovery port is 9300. This commit addresses this.
247 lines
11 KiB
Plaintext
247 lines
11 KiB
Plaintext
[[modules-discovery-settings]]
|
|
=== Discovery and cluster formation settings
|
|
|
|
Discovery and cluster formation are affected by the following settings:
|
|
|
|
`discovery.seed_hosts`::
|
|
+
|
|
--
|
|
Provides a list of the addresses of the master-eligible nodes in the cluster.
|
|
May also be a single string containing the addresses separated by commas. Each
|
|
address has the format `host:port` or `host`. The `host` is either a host name
|
|
to be resolved by DNS, an IPv4 address, or an IPv6 address. IPv6 addresses
|
|
must be enclosed in square brackets. If a host name resolves via DNS to multiple
|
|
addresses, {es} uses all of them. DNS lookups are subject to
|
|
<<networkaddress-cache-ttl,JVM DNS caching>>. If the `port` is not given then it
|
|
is determined by checking the following settings in order:
|
|
|
|
. `transport.profiles.default.port`
|
|
. `transport.port`
|
|
|
|
If neither of these is set then the default port is `9300`. The default value
|
|
for `discovery.seed_hosts` is `["127.0.0.1", "[::1]"]`. See <<unicast.hosts>>.
|
|
|
|
This setting was previously known as `discovery.zen.ping.unicast.hosts`. Its
|
|
old name is deprecated but continues to work in order to preserve backwards
|
|
compatibility. Support for the old name will be removed in a future version.
|
|
--
|
|
|
|
`discovery.seed_providers`::
|
|
|
|
Specifies which types of <<built-in-hosts-providers,seed hosts provider>> to
|
|
use to obtain the addresses of the seed nodes used to start the discovery
|
|
process. By default, it is the
|
|
<<settings-based-hosts-provider,settings-based seed hosts provider>> which
|
|
obtains the seed node addresses from the `discovery.seed_hosts` setting.
|
|
This setting was previously known as `discovery.zen.hosts_provider`. Its old
|
|
name is deprecated but continues to work in order to preserve backwards
|
|
compatibility. Support for the old name will be removed in a future version.
|
|
|
|
`discovery.type`::
|
|
|
|
Specifies whether {es} should form a multiple-node cluster. By default, {es}
|
|
discovers other nodes when forming a cluster and allows other nodes to join
|
|
the cluster later. If `discovery.type` is set to `single-node`, {es} forms a
|
|
single-node cluster and suppresses the timeouts set by
|
|
`cluster.publish.timeout` and `cluster.join.timeout`. For more information
|
|
about when you might use this setting, see <<single-node-discovery>>.
|
|
|
|
`cluster.initial_master_nodes`::
|
|
|
|
Sets the initial set of master-eligible nodes in a brand-new cluster. By
|
|
default this list is empty, meaning that this node expects to join a cluster
|
|
that has already been bootstrapped. See <<initial_master_nodes>>.
|
|
|
|
[float]
|
|
==== Expert settings
|
|
|
|
Discovery and cluster formation are also affected by the following
|
|
_expert-level_ settings, although it is not recommended to change any of these
|
|
from their default values.
|
|
|
|
WARNING: If you adjust these settings then your cluster may not form correctly
|
|
or may become unstable or intolerant of certain failures.
|
|
|
|
`discovery.cluster_formation_warning_timeout`::
|
|
|
|
Sets how long a node will try to form a cluster before logging a warning
|
|
that the cluster did not form. Defaults to `10s`. If a cluster has not
|
|
formed after `discovery.cluster_formation_warning_timeout` has elapsed then
|
|
the node will log a warning message that starts with the phrase `master not
|
|
discovered` which describes the current state of the discovery process.
|
|
|
|
`discovery.find_peers_interval`::
|
|
|
|
Sets how long a node will wait before attempting another discovery round.
|
|
Defaults to `1s`.
|
|
|
|
`discovery.probe.connect_timeout`::
|
|
|
|
Sets how long to wait when attempting to connect to each address. Defaults
|
|
to `3s`.
|
|
|
|
`discovery.probe.handshake_timeout`::
|
|
|
|
Sets how long to wait when attempting to identify the remote node via a
|
|
handshake. Defaults to `1s`.
|
|
|
|
`discovery.request_peers_timeout`::
|
|
|
|
Sets how long a node will wait after asking its peers again before
|
|
considering the request to have failed. Defaults to `3s`.
|
|
|
|
`discovery.seed_resolver.max_concurrent_resolvers`::
|
|
|
|
Specifies how many concurrent DNS lookups to perform when resolving the
|
|
addresses of seed nodes. Defaults to `10`. This setting was previously
|
|
known as `discovery.zen.ping.unicast.concurrent_connects`. Its old name is
|
|
deprecated but continues to work in order to preserve backwards
|
|
compatibility. Support for the old name will be removed in a future
|
|
version.
|
|
|
|
`discovery.seed_resolver.timeout`::
|
|
|
|
Specifies how long to wait for each DNS lookup performed when resolving the
|
|
addresses of seed nodes. Defaults to `5s`. This setting was previously
|
|
known as `discovery.zen.ping.unicast.hosts.resolve_timeout`. Its old name
|
|
is deprecated but continues to work in order to preserve backwards
|
|
compatibility. Support for the old name will be removed in a future
|
|
version.
|
|
|
|
`cluster.auto_shrink_voting_configuration`::
|
|
|
|
Controls whether the <<modules-discovery-voting,voting configuration>>
|
|
sheds departed nodes automatically, as long as it still contains at least 3
|
|
nodes. The default value is `true`. If set to `false`, the voting
|
|
configuration never shrinks automatically and you must remove departed
|
|
nodes manually with the <<voting-config-exclusions,voting configuration
|
|
exclusions API>>.
|
|
|
|
[[master-election-settings]]`cluster.election.back_off_time`::
|
|
|
|
Sets the amount to increase the upper bound on the wait before an election
|
|
on each election failure. Note that this is _linear_ backoff. This defaults
|
|
to `100ms`. Changing this setting from the default may cause your cluster
|
|
to fail to elect a master node.
|
|
|
|
`cluster.election.duration`::
|
|
|
|
Sets how long each election is allowed to take before a node considers it
|
|
to have failed and schedules a retry. This defaults to `500ms`. Changing
|
|
this setting from the default may cause your cluster to fail to elect a
|
|
master node.
|
|
|
|
`cluster.election.initial_timeout`::
|
|
|
|
Sets the upper bound on how long a node will wait initially, or after the
|
|
elected master fails, before attempting its first election. This defaults
|
|
to `100ms`. Changing this setting from the default may cause your cluster
|
|
to fail to elect a master node.
|
|
|
|
`cluster.election.max_timeout`::
|
|
|
|
Sets the maximum upper bound on how long a node will wait before attempting
|
|
an first election, so that an network partition that lasts for a long time
|
|
does not result in excessively sparse elections. This defaults to `10s`.
|
|
Changing this setting from the default may cause your cluster to fail to
|
|
elect a master node.
|
|
|
|
[[fault-detection-settings]]`cluster.fault_detection.follower_check.interval`::
|
|
|
|
Sets how long the elected master waits between follower checks to each
|
|
other node in the cluster. Defaults to `1s`. Changing this setting from the
|
|
default may cause your cluster to become unstable.
|
|
|
|
`cluster.fault_detection.follower_check.timeout`::
|
|
|
|
Sets how long the elected master waits for a response to a follower check
|
|
before considering it to have failed. Defaults to `10s`. Changing this
|
|
setting from the default may cause your cluster to become unstable.
|
|
|
|
`cluster.fault_detection.follower_check.retry_count`::
|
|
|
|
Sets how many consecutive follower check failures must occur to each node
|
|
before the elected master considers that node to be faulty and removes it
|
|
from the cluster. Defaults to `3`. Changing this setting from the default
|
|
may cause your cluster to become unstable.
|
|
|
|
`cluster.fault_detection.leader_check.interval`::
|
|
|
|
Sets how long each node waits between checks of the elected master.
|
|
Defaults to `1s`. Changing this setting from the default may cause your
|
|
cluster to become unstable.
|
|
|
|
`cluster.fault_detection.leader_check.timeout`::
|
|
|
|
Sets how long each node waits for a response to a leader check from the
|
|
elected master before considering it to have failed. Defaults to `10s`.
|
|
Changing this setting from the default may cause your cluster to become
|
|
unstable.
|
|
|
|
`cluster.fault_detection.leader_check.retry_count`::
|
|
|
|
Sets how many consecutive leader check failures must occur before a node
|
|
considers the elected master to be faulty and attempts to find or elect a
|
|
new master. Defaults to `3`. Changing this setting from the default may
|
|
cause your cluster to become unstable.
|
|
|
|
`cluster.follower_lag.timeout`::
|
|
|
|
Sets how long the master node waits to receive acknowledgements for cluster
|
|
state updates from lagging nodes. The default value is `90s`. If a node
|
|
does not successfully apply the cluster state update within this period of
|
|
time, it is considered to have failed and is removed from the cluster. See
|
|
<<cluster-state-publishing>>.
|
|
|
|
`cluster.join.timeout`::
|
|
|
|
Sets how long a node will wait after sending a request to join a cluster
|
|
before it considers the request to have failed and retries, unless
|
|
`discovery.type` is set to `single-node`. Defaults to `60s`.
|
|
|
|
`cluster.max_voting_config_exclusions`::
|
|
|
|
Sets a limit on the number of voting configuration exclusions at any one
|
|
time. The default value is `10`. See
|
|
<<modules-discovery-adding-removing-nodes>>.
|
|
|
|
`cluster.publish.info_timeout`::
|
|
|
|
Sets how long the master node waits for each cluster state update to be
|
|
completely published to all nodes before logging a message indicating that
|
|
some nodes are responding slowly. The default value is `10s`.
|
|
|
|
`cluster.publish.timeout`::
|
|
|
|
Sets how long the master node waits for each cluster state update to be
|
|
completely published to all nodes, unless `discovery.type` is set to
|
|
`single-node`. The default value is `30s`. See <<cluster-state-publishing>>.
|
|
|
|
[[no-master-block]]`cluster.no_master_block`::
|
|
Specifies which operations are rejected when there is no active master in a
|
|
cluster. This setting has two valid values:
|
|
+
|
|
--
|
|
`all`::: All operations on the node (both read and write operations) are rejected.
|
|
This also applies for API cluster state read or write operations, like the get
|
|
index settings, put mapping and cluster state API.
|
|
|
|
`write`::: (default) Write operations are rejected. Read operations succeed,
|
|
based on the last known cluster configuration. This situation may result in
|
|
partial reads of stale data as this node may be isolated from the rest of the
|
|
cluster.
|
|
|
|
[NOTE]
|
|
===============================
|
|
* The `cluster.no_master_block` setting doesn't apply to nodes-based APIs
|
|
(for example, cluster stats, node info, and node stats APIs). Requests to these
|
|
APIs are not be blocked and can run on any available node.
|
|
|
|
* For the cluster to be fully operational, it must have an active master.
|
|
===============================
|
|
|
|
WARNING: This setting replaces the `discovery.zen.no_master_block` setting in
|
|
earlier versions. The `discovery.zen.no_master_block` setting is ignored.
|
|
|
|
--
|