原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/discovery-settings.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/discovery-settings.html

发现(discovery)和集群形成的重要设置

在投入生产之前,应该配置两个重要的 发现(discovery) 和 集群形成(cluster formation) 设置,以便集群中的节点能够彼此发现并选举一个主节点。

discovery.seed_hosts

在没有任何网络配置的情况下,Elasticsearch 将绑定到可用的回环地址,并扫描本地端口 9300 至9305,尝试连接到同一服务器上运行的其他节点。 这提供了一种自动集群体验,而无需进行任何配置。

当你想要在其他主机上形成一个有多个节点的集群时,你应该使用 discovery.seed_hosts 设置来提供一个集群中其他(符合主节点的条件的)节点的列表,并且可能是活动的和可连接的,以便启动 发现过程(discovery process)。 此设置应是集群中所有合格主节点的节点的地址列表。 每个地址可以是 IP 地址,也可以是主机名(可以通过 DNS 解析为一个或多个 IP 地址)。

如果你的符合主节点的节点没有固定的名称或地址,请使用 替代主机提供程序(alternative hosts provider) 动态查找它们的地址。

cluster.initial_master_nodes

当你第一次启动一个全新的 ElasticSearch 集群时,就会有一个 集群引导步骤,它确定第一次选举中计算选票的一组符合主节点条件的节点。 在开发模式中,没有配置任何 发现(discovery) 设置,此步骤将由节点自己自动执行。 由于这种自动引导本质上是不安全的,所以当你在生产模式中启动一个全新的集群时,必须显式地列出在第一次选举中应该计算选票的符合主节点条件的节点。 这个列表是使用 cluster.initial_master_nodes 设置来设置的。 当重新启动集群或向现有集群添加新节点时,不应使用此设置。

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: 
   - master-node-a
   - master-node-b
   - master-node-c

端口是可选的,通常默认为 9300,但此默认设置可以被某些设置 覆盖

如果一个主机名解析到多个 IP 地址,则该节点将尝试在所有已解析的地址上发现其他节点。

IPv6 地址必须用方括号括起来。

初始主节点应该通过它们的 node.name来标识,默认为它们的主机名。 确保 cluster.initial_master_nodes 的值与 node.name 完全匹配。 如果你使用一个绝对域名,如 master-node-a.example.com,那么你必须在此列表中使用完整的名称; 相反,如果 node.name 是一个没有 后限定符(trailing qualifier) 的裸主机名,那么还必须省略 cluster.initial_master_nodes 中的后限定符。

更多信息请参考 快速启动一个集群发现和集群形成设置