面试题答案
一键面试主要配置参数及作用
- discovery.seed_hosts
- 作用:指定集群中可被选为主节点的初始种子节点列表。这些节点用于发现集群中的其他节点,并开始选主过程。例如,当一个新节点加入集群时,它会尝试连接到这些种子节点,获取集群的状态信息等。可以配置为IP地址或主机名的列表,如
["192.168.1.100:9300", "192.168.1.101:9300"]
。
- 作用:指定集群中可被选为主节点的初始种子节点列表。这些节点用于发现集群中的其他节点,并开始选主过程。例如,当一个新节点加入集群时,它会尝试连接到这些种子节点,获取集群的状态信息等。可以配置为IP地址或主机名的列表,如
- cluster.initial_master_nodes
- 作用:在集群启动时,明确指定哪些节点有资格成为主节点。这个参数在Elasticsearch 7.0及之后版本中取代了之前版本的
discovery.zen.ping.unicast.hosts
等相关配置。它确保在首次启动集群时,只有明确列出的节点才能参与主节点的选举,有助于避免脑裂等问题。例如,可以配置为["node-1", "node-2"]
,这里的node - 1
和node - 2
是节点的名称。
- 作用:在集群启动时,明确指定哪些节点有资格成为主节点。这个参数在Elasticsearch 7.0及之后版本中取代了之前版本的
- node.master
- 作用:设置该节点是否有资格成为主节点。如果设置为
true
,表示该节点可以参与主节点的选举;设置为false
,则该节点永远不会被选举为主节点,通常用于数据节点或客户端节点。例如,在数据节点的配置文件中,一般会将node.master: false
,以专注于数据存储和检索功能,不参与选主过程。
- 作用:设置该节点是否有资格成为主节点。如果设置为
- discovery.zen.minimum_master_nodes(在较新版本中已弃用)
- 作用:在旧版本(如Elasticsearch 6.x及之前)中,用于指定形成集群所需的最少主节点数。它的目的是防止脑裂情况的发生,确保集群中有足够的节点来达成选举共识。计算方式一般是
(master_eligible_nodes / 2) + 1
。例如,如果有3个有资格成为主节点的节点,那么discovery.zen.minimum_master_nodes
应设置为2。
- 作用:在旧版本(如Elasticsearch 6.x及之前)中,用于指定形成集群所需的最少主节点数。它的目的是防止脑裂情况的发生,确保集群中有足够的节点来达成选举共识。计算方式一般是
不同版本配置参数兼容性常见问题
- 版本更替导致参数变化
- 在Elasticsearch 7.0版本中,
cluster.initial_master_nodes
取代了旧版本中类似discovery.zen.ping.unicast.hosts
和discovery.zen.minimum_master_nodes
等部分功能。如果从旧版本升级到7.0及以上版本,没有正确更新配置,可能会导致集群启动失败或选主异常。例如,仍然使用旧的discovery.zen.ping.unicast.hosts
而未配置cluster.initial_master_nodes
,集群可能无法正确初始化。
- 在Elasticsearch 7.0版本中,
- 参数弃用问题
- 像
discovery.zen.minimum_master_nodes
在7.0及之后版本被弃用。如果在新版本中继续使用该参数,虽然配置文件可能不会报错,但该参数实际上不再生效,可能会使集群面临脑裂风险。因为新版本通过cluster.initial_master_nodes
等参数来确保选主的一致性和稳定性,旧参数的继续使用可能会干扰新的选主机制。
- 像
- 参数格式差异
- 不同版本中参数的格式可能会有细微变化。例如,
discovery.seed_hosts
在配置时,早期版本可能对IP地址和端口的格式要求相对宽松,而在新版本中可能更加严格,要求必须明确指定端口等。如果配置不符合新版本要求,可能导致节点无法发现或选主失败。
- 不同版本中参数的格式可能会有细微变化。例如,