Description
Since 8.0.0 and the changes for Security ON by default, when a node starts and gets TLS auto-configuration, we bind the http layer to _site_
and _local_
but transport layer still only to _local_
. This is an intentional design decision, and it means that
a) We don't generate an enrollment token for other nodes, as we expect the user needs to perform some additional actions (bind to non localhost address , take care of bootstrap checks ) if/before they can enroll new nodes, so the enrollment token would be probably invalid by the time it would be used.
b) Only nodes on the same host can join the cluster without additional configuration ( set network.host or transport.host to a non localhost address)
Additionally, since we do not bind to non localhost in nodes that enroll to an existing node, enrollment can succeed but the node will fail to join the cluster if the rest of the nodes are in different hosts.
We can
- Adjust our documentation to make this clear, in the sections where we describe how to manually setup a multi node cluster with our enrollment mode so that users are aware of the limitation and the required actions.
- (optionally) change our generated configuration to have a commented out
#transport.host
setting that users can enable, with an associated sentence - Adjust the output of our auto-configuration to add information around this
- Adjust the output of
elasticsearch-create-enrollment-token
to print a warning when the node that generates the token is only bound to localhost - Set
transport.host
on new nodes that enroll to a cluster if we can determine that they are on different hosts than the existing nodes. - allow a --transport.host parameter that woul take an IP Address or hostname and persist that in the configuration of the node that we auto-generate.