首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点不会加入集群: NotMasterException (奇怪的主选举错误)

节点不会加入集群: NotMasterException (奇怪的主选举错误)
EN

Stack Overflow用户
提问于 2016-11-25 18:36:45
回答 2查看 3.9K关注 0票数 5

我正在建立一个elasticsearch (5.0.1)集群。

它有三个合格的主节点:

代码语言:javascript
复制
el-m01
el-m02
el-m03

集群无法组装,每个主节点在日志中都会获得以下NotMasterException异常:

代码语言:javascript
复制
[2016-11-21T15:24:13,274][INFO ][o.e.d.z.ZenDiscovery     ] [el-m01] failed to send join request to master [{el-m02}{bBhsu3fJSj-MyiWJGhQmog}{_IzdeUd4Sv6g-rhemGjEVQ}{192.168.110.118}{192.168.110.118:9300}{rack=r1}], reason [RemoteTransportException[[el-m02][192.168.110.118:9300][internal:discovery/zen/join]]; nested: NotMasterException[Node [{el-m02}{bBhsu3fJSj-MyiWJGhQmog}{_IzdeUd4Sv6g-rhemGjEVQ}{192.168.110.118}{192.168.110.118:9300}{rack=r1}] not master for join request]; ], tried [3] times

启用调试日志使我能够理解以下内容:

主选举正在进行,而且是成功的。然而,虽然每个节点都选择了一个主节点,但没有一个节点认为他是主节点。即:

  • el-m01认为el-m02是主人
  • el-m02认为el-m03是大师。
  • el-m03认为el-m01是大师

这里发生了什么事?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-25 18:52:09

下面是这样的情况:通过克隆一个VM来获取所有的主节点,每个节点都具有相同的节点id

这可以通过以下命令进行验证,列出所有节点ids:

代码语言:javascript
复制
GET /_cat/nodes?v&h=id,ip,name&full_id=true

请注意,由于群集尚未形成,因此需要单独查询每个节点,即:

代码语言:javascript
复制
curl 192.168.110.111:9200/_cat/nodes?v&h=id,ip,name&full_id=true
curl 192.168.110.112:9200/_cat/nodes?v&h=id,ip,name&full_id=true
(...)

这很糟糕。节点ids必须是唯一的。

要解决这种情况,您需要删除每个节点上的索引(在/var/lib/elasticsearch中)。这将使删除elasticsearch中的所有数据,并重置节点ids。

为了避免出现这个问题,您可以:

  • A.克隆VM后安装elasticsearch
  • 使用自动化工具,如ansible或傀儡来管理elasticsearch。
票数 19
EN

Stack Overflow用户

发布于 2018-08-16 11:50:04

Elasticsearch数据目录$ES_HOME/data,或者在RPM的情况下,例如,当Elasticsearch第一次启动时,/var/lib/elasticsearch包含一个随机生成的节点ID。如果将此目录复制到多个期望形成群集的实例,则应收到以下错误:

代码语言:javascript
复制
failed to send join request to master [..] IllegalArgumentException [..] found existing node [..] with the same id but is a different node instance

但是,当未满足minimum_master_nodes时,接收到的错误不足以说明问题:

代码语言:javascript
复制
failed to send join request to master [..] NotMasterException [..] not master for join request

Github:https://github.com/elastic/elasticsearch/issues/32904

这个问题可以通过删除数据目录的内容来解决,数据目录不应该首先被复制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40810765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档