【问题标题】:Elasticsearch 7.2.0: master not discovered or elected yet, an election requires at least X nodesElasticsearch 7.2.0:master 尚未被发现或选举,选举至少需要 X 个节点
【发布时间】:2020-04-07 09:13:40
【问题描述】:

我正在尝试自动化 kubernetes 集群中弹性搜索节点的横向扩展和缩减过程。

最初,我在 Kubernetes 集群上部署了一个 elasticsearch 集群(3 个主节点、3 个数据节点和 3 个摄取节点)。其中,cluster.initial_master_nodes 是:

cluster.initial_master_nodes:
  - master-a
  - master-b
  - master-c

然后,我进行了缩减操作,将主节点 3 的数量减少到 1 个(出乎意料,但出于测试目的)。在执行此操作时,我删除了master-cmaster-b 节点并使用以下设置重新启动了master-a 节点:

cluster.initial_master_nodes:
  - master-a

由于elasticsearch节点(即pods)使用持久化卷,重启节点后,master-a减慢如下日志:

"message": "master not discovered or elected yet, an election requires at least 2 nodes with ids from [TxdOAdryQ8GAeirXQHQL-g, VmtilfRIT6KDVv1R6MHGlw, KAJclUD2SM6rt9PxCGACSA], have discovered [] which is not a quorum; discovery will continue using [] from hosts providers and [{master-a}{VmtilfRIT6KDVv1R6MHGlw}{g29haPBLRha89dZJmclkrg}{10.244.0.95}{10.244.0.95:9300}{ml.machine_memory=12447109120, xpack.installed=true, ml.max_open_jobs=20}] from last-known cluster state; node term 5, last-accepted version 40 in term 5"  }

似乎它正在尝试查找master-bmaster-c

问题:

  • 如何覆盖集群设置,使master-a 不会搜索这些已删除的节点?

【问题讨论】:

    标签: elasticsearch kubernetes kubernetes-operator


    【解决方案1】:

    cluster.initial_master_nodes 设置仅在集群第一次启动时生效,但为避免一些非常罕见的极端情况,一旦设置它就不应更改其值,通常应将其从配置文件中删除尽快地。来自the reference manual 关于cluster.initial_master_nodes

    在重新启动集群或向现有集群添加新节点时,不应使用此设置。

    除此之外,Elasticsearch 使用 quorum-based election protocol 并表示以下内容:

    为确保集群保持可用,您不得同时停止投票配置中的一半或更多节点

    您同时停止了三个符合主节点条件的节点中的两个,超过了一半,因此预计集群不再工作。

    参考手册还包含您未遵循的instructions for removing master-eligible nodes

    只要集群中至少有三个符合主节点资格的节点,作为一般规则,最好一次删除一个节点,以便集群有足够的时间自动调整投票配置和使容错级别适应新的节点集。

    如果只剩下两个符合主节点资格的节点,那么这两个节点都不能安全地移除,因为这两个节点都需要可靠地取得进展。要删除其中一个节点,您必须首先通知 Elasticsearch 它不应成为投票配置的一部分,而应将投票权授予另一个节点。

    它继续描述了在缩减到单个节点时如何使用POST /_cluster/voting_config_exclusions/node_name 从投票配置中安全地删除不需要的节点。

    【讨论】:

      【解决方案2】:

      Cluster state 还将主配置存储存储在 Elasticsearch 节点的数据文件夹中,在您的情况下,它似乎正在读取旧集群状态(即 3 个主节点,带有它们的 id)。

      您能否删除master-a 的数据文件夹,以便它可以从干净的集群状态开始,它应该可以解决您的问题。

      还要确保其他数据和摄取节点具有master.node:false 设置,默认为true。

      【讨论】:

      • 感谢您的回复。据我了解,数据文件夹包含有关所有分片分配、索引、集群设置、集群状态等信息。对于一个持有 TB 数据的集群,删除整个文件夹是否可行?我们不能只删除主节点信息部分吗?
      • 我也对@KamolHasan 的问题感兴趣。有没有办法只删除“主节点信息”?
      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      相关资源
      最近更新 更多