73 lines
3.5 KiB
Plaintext
73 lines
3.5 KiB
Plaintext
[[discovery-settings]]
|
|
=== Important discovery and cluster formation settings
|
|
++++
|
|
<titleabbrev>Discovery and cluster formation settings</titleabbrev>
|
|
++++
|
|
|
|
There are two important discovery and cluster formation settings that should be
|
|
configured before going to production so that nodes in the cluster can discover
|
|
each other and elect a master node.
|
|
|
|
[float]
|
|
[[unicast.hosts]]
|
|
==== `discovery.seed_hosts`
|
|
|
|
Out of the box, without any network configuration, Elasticsearch will bind to
|
|
the available loopback addresses and will scan local ports 9300 to 9305 to try
|
|
to connect to other nodes running on the same server. This provides an auto-
|
|
clustering experience without having to do any configuration.
|
|
|
|
When you want to form a cluster with nodes on other hosts, you must use the
|
|
`discovery.seed_hosts` setting to provide a list of other nodes in the cluster
|
|
that are master-eligible and likely to be live and contactable in order to seed
|
|
the <<modules-discovery-hosts-providers,discovery process>>. This setting
|
|
should normally contain the addresses of all the master-eligible nodes in the
|
|
cluster. This setting contains either an array of hosts or a comma-delimited
|
|
string. Each value should be in the form of `host:port` or `host` (where `port`
|
|
defaults to the setting `transport.profiles.default.port` falling back to
|
|
`transport.port` if not set). Note that IPv6 hosts must be bracketed. The
|
|
default for this setting is `127.0.0.1, [::1]`.
|
|
|
|
[float]
|
|
[[initial_master_nodes]]
|
|
==== `cluster.initial_master_nodes`
|
|
|
|
When you start a brand new Elasticsearch cluster for the very first time, there
|
|
is a <<modules-discovery-bootstrap-cluster,cluster bootstrapping>> step, which
|
|
determines the set of master-eligible nodes whose votes are counted in the very
|
|
first election. In <<dev-vs-prod-mode,development mode>>, with no discovery
|
|
settings configured, this step is automatically performed by the nodes
|
|
themselves. As this auto-bootstrapping is <<modules-discovery-quorums,inherently
|
|
unsafe>>, when you start a brand new cluster in <<dev-vs-prod-mode,production
|
|
mode>>, you must explicitly list the names or IP addresses of the
|
|
master-eligible nodes whose votes should be counted in the very first election.
|
|
This list is set using the `cluster.initial_master_nodes` setting.
|
|
|
|
[source,yaml]
|
|
--------------------------------------------------
|
|
discovery.seed_hosts:
|
|
- 192.168.1.10:9300
|
|
- 192.168.1.11 <1>
|
|
- seeds.mydomain.com <2>
|
|
cluster.initial_master_nodes:
|
|
- master-node-a <3>
|
|
- 192.168.1.12 <4>
|
|
- 192.168.1.13:9301 <5>
|
|
--------------------------------------------------
|
|
<1> The port will default to `transport.profiles.default.port` and fallback to
|
|
`transport.port` if not specified.
|
|
<2> If a hostname resolves to multiple IP addresses then the node will attempt to
|
|
discover other nodes at all resolved addresses.
|
|
<3> Initial master nodes can be identified by their <<node.name,`node.name`>>.
|
|
Make sure that the value here matches the `node.name` exactly. If you use a
|
|
fully-qualified domain name such as `master-node-a.example.com` for your
|
|
node names then you must use the fully-qualified name in this list;
|
|
conversely if `node.name` is a bare hostname without any trailing
|
|
qualifiers then you must also omit the trailing qualifiers in
|
|
`cluster.initial_master_nodes`.
|
|
<4> Initial master nodes can also be identified by their IP address.
|
|
<5> If multiple master nodes share an IP address then the port must be used to
|
|
disambiguate them.
|
|
|
|
For more information, see <<modules-discovery-settings>>.
|