[[discovery-settings]]
=== Important discovery and cluster formation settings
++++
Discovery and cluster formation settings
++++
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 <>. 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 <> step, which
determines the set of master-eligible nodes whose votes are counted in the very
first election. In <>, with no discovery
settings configured, this step is automatically performed by the nodes
themselves. As this auto-bootstrapping is <>, when you start a brand new cluster in <>, you must explicitly list 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. You should not use this setting when
restarting a cluster or adding a new node to an existing cluster.
[source,yaml]
--------------------------------------------------
discovery.seed_hosts:
- 192.168.1.10:9300
- 192.168.1.11 <1>
- seeds.mydomain.com <2>
cluster.initial_master_nodes: <3>
- master-node-a
- master-node-b
- master-node-c
--------------------------------------------------
<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> The initial master nodes should be identified by their
<>, which defaults to their hostname. Make sure that
the value in `cluster.initial_master_nodes` 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`.
For more information, see <> and
<>.