mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-08 22:14:59 +00:00
69b78f7f8a
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.
76 lines
3.5 KiB
Plaintext
76 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 should 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 be a list of the addresses of all the master-eligible nodes in the
|
|
cluster. Each address can be either an IP address or a hostname which resolves
|
|
to one or more IP addresses via DNS.
|
|
|
|
If your master-eligible nodes do not have fixed names or addresses, use an
|
|
<<built-in-hosts-providers,alternative hosts provider>> to find their addresses
|
|
dynamically.
|
|
|
|
[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 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>
|
|
- [0:0:0:0:0:ffff:c0a8:10c]:9301 <3>
|
|
cluster.initial_master_nodes: <4>
|
|
- master-node-a
|
|
- master-node-b
|
|
- master-node-c
|
|
--------------------------------------------------
|
|
<1> The port is optional and usually defaults to `9300`, but this default can
|
|
be <<built-in-hosts-providers,overridden>> by certain settings.
|
|
<2> If a hostname resolves to multiple IP addresses then the node will attempt to
|
|
discover other nodes at all resolved addresses.
|
|
<3> IPv6 addresses must be enclosed in square brackets.
|
|
<4> The initial master nodes should be identified by their
|
|
<<node.name,`node.name`>>, 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 <<modules-discovery-bootstrap-cluster>> and
|
|
<<modules-discovery-settings>>.
|