ElasticSearch VM clone - master_not_found_exception,发现现有节点具有相同的id但是是不同的节点实例

时间:2017-05-28 05:23:14

标签: elasticsearch virtualbox

这是我的设置:

Ubuntu 16.04的两个实例。第二个是从第一个克隆制成的克隆。 ElasticSearch仅安装在Guest(Ubuntu)操作系统上。克隆VM后已对配置进行了调整。

我在VirtualBox中使用桥接网络运行 - 每个实例都从路由器获取IP。 Windows(主机)防火墙已正确配置。所有机器都可以相互ping通。 Ping,Netstat和nmap测试显示端口9200和9300是OPEN(也是经过测试的“远程”主机)。

ElasticSearch服务正在正常运行。我可以在本地和远程“卷曲-XGET”并获得正确的结果。

问题是来自第二台机器的ES没有加入群集。

以下是配置文件:

第一个:

cluster.name: p4g4n_cluster
node.name: master
node.master: true
network.host: 192.168.0.12
discovery.zen.ping.unicast.hosts: ["192.168.0.12", "192.168.0.17"]

第二个:

cluster.name: p4g4n_cluster
node.name: node1
node.master: false
network.host: 192.168.0.17
discovery.zen.ping.unicast.hosts: ["192.168.0.12", "192.168.0.17"]

如果我尝试curl -XGET 192.168.0.17:9200/_cluster/health,我会得到master_not_discovered_exception。如果我尝试了基本的GET请求,我会看到node1有<{1}} cluster_uuid`的 _na _

运行ElasticSearch的版本是:5.4.0和 Lucene的版本是:6.5.0

为了让cluster_uuid" property, while on first machine - *master*能够看到并加入群集,任何人都可以帮助我解决需要发生的事情吗?

2 个答案:

答案 0 :(得分:2)

我能够解决这个问题。

挖掘日志显示这不是网络配置问题。

由于我首先在一台计算机上配置了整个ELK堆栈然后克隆了它,因此ES和logstash已经在运行并将syslog日志记录到弹性中。

因此,克隆的计算机具有与现有计算机相同的数据文件夹。事实证明,节点UUID嵌入在数据文件夹中,解决方案是删除克隆VM上的数据文件夹。

我在日志中发现的错误是:发现现有节点{xxx}具有相同的ID但是是不同的节点实例 ...所以存在明显的冲突。

我发现这个github ES issueSO answer处理了同样的问题。

答案 1 :(得分:0)

您可以尝试在两台服务器中添加network.bind_host:0.0.0.0