这是我的设置:
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*
能够看到并加入群集,任何人都可以帮助我解决需要发生的事情吗?
答案 0 :(得分:2)
我能够解决这个问题。
挖掘日志显示这不是网络配置问题。
由于我首先在一台计算机上配置了整个ELK堆栈然后克隆了它,因此ES和logstash已经在运行并将syslog日志记录到弹性中。
因此,克隆的计算机具有与现有计算机相同的数据文件夹。事实证明,节点UUID嵌入在数据文件夹中,解决方案是删除克隆VM上的数据文件夹。
我在日志中发现的错误是:发现现有节点{xxx}具有相同的ID但是是不同的节点实例 ...所以存在明显的冲突。
我发现这个github ES issue和SO answer处理了同样的问题。
答案 1 :(得分:0)
您可以尝试在两台服务器中添加network.bind_host:0.0.0.0