Elasticsearch discovery seed_hosts

The Current Master ensures that the cluster state is present in all the nodes inclusive of the data nodes. Which means the datanodes know the cluster state and who the current master is and which nodes are master eligible nodes as well. Then why does discovery.seed_hosts setting ignores the datanodes and works only if atleast 1 master-eligible node is present.

In principle Elasticsearch could use data-only nodes for discovery too, but in practice if you don’t have any master-eligible nodes in your discovery.seed_hosts list then it seems likely that you’ve configured things in a way that will cause you problems in future. Best to be strict in this regard.

Hey David, I believed that in principle until when I tested it out, the node didnt join the cluster.

node [null], requesting [false] discovery result: …. successfully discovered master-ineligible node…...to suppress this message, remove address from your discovery configuration or ensure that traffic to this address is routed only to master-eligible nodes

The above log seem to imply that the seed hosts should be master eligible and the docs for discovery process has a line implying that as well

The process operates in two phases: First, each node probes the seed addresses by connecting to each address and attempting to identify the node to which it is connected and to verify that it is master-eligible

Now I am behind answer to "why is that the case that the seed hosts should be master-eligible and master in-eligible nodes get ignored". I cant seem to find answer to it across the docs or internet. Can you please help me with the understanding.

It’s what I said in my earlier message: if you have master-ineligible nodes here then you’re probably setting yourself up for problems in the future.

I absolutely agree with you. We dont have it deployed it that way and wont be either. Just I am curious and looking for the explanation as to why cant a master ineligible node be a seed host when in theory it should be able to since it has cluster state on it.