MST

星途 面试题库

面试题:ElasticSearch选主相关配置及兼容性基础

请阐述ElasticSearch中与选主相关的主要配置参数有哪些,并简单说明它们的作用,以及在不同版本中这些配置参数的兼容性可能会出现哪些常见问题?
20.1万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

主要配置参数及作用

  1. discovery.seed_hosts
    • 作用:指定集群中可被选为主节点的初始种子节点列表。这些节点用于发现集群中的其他节点,并开始选主过程。例如,当一个新节点加入集群时,它会尝试连接到这些种子节点,获取集群的状态信息等。可以配置为IP地址或主机名的列表,如 ["192.168.1.100:9300", "192.168.1.101:9300"]
  2. cluster.initial_master_nodes
    • 作用:在集群启动时,明确指定哪些节点有资格成为主节点。这个参数在Elasticsearch 7.0及之后版本中取代了之前版本的 discovery.zen.ping.unicast.hosts 等相关配置。它确保在首次启动集群时,只有明确列出的节点才能参与主节点的选举,有助于避免脑裂等问题。例如,可以配置为 ["node-1", "node-2"],这里的 node - 1node - 2 是节点的名称。
  3. node.master
    • 作用:设置该节点是否有资格成为主节点。如果设置为 true,表示该节点可以参与主节点的选举;设置为 false,则该节点永远不会被选举为主节点,通常用于数据节点或客户端节点。例如,在数据节点的配置文件中,一般会将 node.master: false,以专注于数据存储和检索功能,不参与选主过程。
  4. discovery.zen.minimum_master_nodes(在较新版本中已弃用)
    • 作用:在旧版本(如Elasticsearch 6.x及之前)中,用于指定形成集群所需的最少主节点数。它的目的是防止脑裂情况的发生,确保集群中有足够的节点来达成选举共识。计算方式一般是 (master_eligible_nodes / 2) + 1。例如,如果有3个有资格成为主节点的节点,那么 discovery.zen.minimum_master_nodes 应设置为2。

不同版本配置参数兼容性常见问题

  1. 版本更替导致参数变化
    • 在Elasticsearch 7.0版本中,cluster.initial_master_nodes 取代了旧版本中类似 discovery.zen.ping.unicast.hostsdiscovery.zen.minimum_master_nodes 等部分功能。如果从旧版本升级到7.0及以上版本,没有正确更新配置,可能会导致集群启动失败或选主异常。例如,仍然使用旧的 discovery.zen.ping.unicast.hosts 而未配置 cluster.initial_master_nodes,集群可能无法正确初始化。
  2. 参数弃用问题
    • discovery.zen.minimum_master_nodes 在7.0及之后版本被弃用。如果在新版本中继续使用该参数,虽然配置文件可能不会报错,但该参数实际上不再生效,可能会使集群面临脑裂风险。因为新版本通过 cluster.initial_master_nodes 等参数来确保选主的一致性和稳定性,旧参数的继续使用可能会干扰新的选主机制。
  3. 参数格式差异
    • 不同版本中参数的格式可能会有细微变化。例如,discovery.seed_hosts 在配置时,早期版本可能对IP地址和端口的格式要求相对宽松,而在新版本中可能更加严格,要求必须明确指定端口等。如果配置不符合新版本要求,可能导致节点无法发现或选主失败。