[[discovery-settings]] [discrete] ==== Discovery and cluster formation settings Configure two important discovery and cluster formation settings before going to production so that nodes in the cluster can discover each other and elect a master node. [discrete] [[unicast.hosts]] ===== `discovery.seed_hosts` Out of the box, without any network configuration, {es} will bind to the available loopback addresses and scan local ports `9300` to `9305` to connect with other nodes running on the same server. This behavior provides an auto-clustering experience without having to do any configuration. When you want to form a cluster with nodes on other hosts, use the <> `discovery.seed_hosts` setting. This setting provides a list of other nodes in the cluster that are master-eligible and likely to be live and contactable to seed the <>. This setting accepts a YAML sequence or array of the addresses of all the master-eligible nodes in the cluster. Each address can be either an IP address or a hostname that resolves to one or more IP addresses via DNS. [source,yaml] ---- discovery.seed_hosts: - 192.168.1.10:9300 - 192.168.1.11 <1> - seeds.mydomain.com <2> - [0:0:0:0:0:ffff:c0a8:10c]:9301 <3> ---- <1> The port is optional and defaults to `9300`, but can be <>. <2> If a hostname resolves to multiple IP addresses, the node will attempt to discover other nodes at all resolved addresses. <3> IPv6 addresses must be enclosed in square brackets. If your master-eligible nodes do not have fixed names or addresses, use an <> to find their addresses dynamically. [discrete] [[initial_master_nodes]] ===== `cluster.initial_master_nodes` When you start an {es} cluster for the first time, a <> step determines the set of master-eligible nodes whose votes are counted in the first election. In <>, with no discovery settings configured, this step is performed automatically by the nodes themselves. Because auto-bootstrapping is <>, when starting a new cluster in production mode, you must explicitly list the master-eligible nodes whose votes should be counted in the very first election. You set this list using the `cluster.initial_master_nodes` setting. IMPORTANT: After the cluster forms successfully for the first time, remove the `cluster.initial_master_nodes` setting from each nodes' configuration. Do 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 - seeds.mydomain.com - [0:0:0:0:0:ffff:c0a8:10c]:9301 cluster.initial_master_nodes: <1> - master-node-a - master-node-b - master-node-c -------------------------------------------------- <1> Identify the initial master nodes by their <>, which defaults to their hostname. Ensure that the value in `cluster.initial_master_nodes` matches the `node.name` exactly. If you use a fully-qualified domain name (FQDN) such as `master-node-a.example.com` for your node names, then you must use the FQDN in this list. Conversely, if `node.name` is a bare hostname without any trailing qualifiers, you must also omit the trailing qualifiers in `cluster.initial_master_nodes`. See <> and <>.