[[modules-discovery]] == Discovery and cluster formation The discovery and cluster formation module is responsible for discovering nodes, electing a master, forming a cluster, and publishing the cluster state each time it changes. It is integrated with other modules. For example, all communication between nodes is done using the <<modules-transport,transport>> module. This module is divided into the following sections: <<modules-discovery-hosts-providers>>:: Discovery is the process where nodes find each other when the master is unknown, such as when a node has just started up or when the previous master has failed. <<modules-discovery-quorums>>:: This section describes how {es} uses a quorum-based voting mechanism to make decisions even if some nodes are unavailable. <<modules-discovery-voting>>:: This section describes the concept of voting configurations, which {es} automatically updates as nodes leave and join the cluster. <<modules-discovery-bootstrap-cluster>>:: Bootstrapping a cluster is required when an Elasticsearch cluster starts up for the very first time. In <<dev-vs-prod-mode,development mode>>, with no discovery settings configured, this is automatically performed by the nodes themselves. As this auto-bootstrapping is <<modules-discovery-quorums,inherently unsafe>>, running a node in <<dev-vs-prod-mode,production mode>> requires bootstrapping to be explicitly configured via the <<modules-discovery-bootstrap-cluster,`cluster.initial_master_nodes` setting>>. <<modules-discovery-adding-removing-nodes,Adding and removing master-eligible nodes>>:: It is recommended to have a small and fixed number of master-eligible nodes in a cluster, and to scale the cluster up and down by adding and removing master-ineligible nodes only. However there are situations in which it may be desirable to add or remove some master-eligible nodes to or from a cluster. This section describes the process for adding or removing master-eligible nodes, including the extra steps that need to be performed when removing more than half of the master-eligible nodes at the same time. <<cluster-state-publishing>>:: Cluster state publishing is the process by which the elected master node updates the cluster state on all the other nodes in the cluster. <<cluster-fault-detection>>:: {es} performs health checks to detect and remove faulty nodes. <<modules-discovery-settings,Settings>>:: There are settings that enable users to influence the discovery, cluster formation, master election and fault detection processes. include::discovery/discovery.asciidoc[] include::discovery/quorums.asciidoc[] include::discovery/voting.asciidoc[] include::discovery/bootstrapping.asciidoc[] include::discovery/adding-removing-nodes.asciidoc[] include::discovery/publishing.asciidoc[] include::discovery/fault-detection.asciidoc[] include::discovery/discovery-settings.asciidoc[]