ElasticSearch VM 克隆 - master_not_found_exception,找到具有相同 ID 但为不同节点实例的现有节点
ElasticSearch VM clone - master_not_found_exception, found existing node with the same id but is a different node instance
这是我的设置:
Ubuntu16.04 的两个实例。第二个是从第一个克隆出来的。 ElasticSearch 仅安装在来宾 (Ubuntu) 操作系统上。克隆虚拟机后配置已调整。
我是 运行 VirtualBox 中的桥接网络 - 每个实例都从路由器获取 IP。 Windows(主机)防火墙配置正确。所有机器都可以互相ping通。 Ping、Netstat 和 nmap 测试显示端口 9200 和 9300 是开放的(也测试了 "remote" 主机)。
ElasticSearch 服务 运行 适当。我可以在本地和远程 "curl -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
有 _na_ 因为 cluster_uuid" property, while on first machine - *master*
cluster_uuid` 存在。
ElasticSearch 运行 的版本是:5.4.0 和
Lucene 版本为:6.5.0
任何人都可以帮助我了解 node1
查看和加入集群所需的条件吗?
你可以尝试在两台服务器中添加network.bind_host:0.0.0.0
我能够解决这个问题。
通过日志挖掘表明这不是网络配置问题。
由于我首先在一台机器上配置了整个 ELK 堆栈然后克隆了它,因此 ES 和 logstash 已经 运行 并且将 syslog 日志泵入弹性。
因此,克隆机器与现有机器具有相同的数据文件夹。事实证明,节点 UUID 嵌入在数据文件夹中,解决方案是删除克隆 VM 上的数据文件夹。
我在日志中发现的错误是:找到具有相同 ID 但不同节点实例的现有节点 {xxx} ... 所以存在明显的冲突。
我发现这个 github ES issue and this 处理了同样的问题。
这是我的设置:
Ubuntu16.04 的两个实例。第二个是从第一个克隆出来的。 ElasticSearch 仅安装在来宾 (Ubuntu) 操作系统上。克隆虚拟机后配置已调整。
我是 运行 VirtualBox 中的桥接网络 - 每个实例都从路由器获取 IP。 Windows(主机)防火墙配置正确。所有机器都可以互相ping通。 Ping、Netstat 和 nmap 测试显示端口 9200 和 9300 是开放的(也测试了 "remote" 主机)。
ElasticSearch 服务 运行 适当。我可以在本地和远程 "curl -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
有 _na_ 因为 cluster_uuid" property, while on first machine - *master*
cluster_uuid` 存在。
ElasticSearch 运行 的版本是:5.4.0 和 Lucene 版本为:6.5.0
任何人都可以帮助我了解 node1
查看和加入集群所需的条件吗?
你可以尝试在两台服务器中添加network.bind_host:0.0.0.0
我能够解决这个问题。
通过日志挖掘表明这不是网络配置问题。
由于我首先在一台机器上配置了整个 ELK 堆栈然后克隆了它,因此 ES 和 logstash 已经 运行 并且将 syslog 日志泵入弹性。
因此,克隆机器与现有机器具有相同的数据文件夹。事实证明,节点 UUID 嵌入在数据文件夹中,解决方案是删除克隆 VM 上的数据文件夹。
我在日志中发现的错误是:找到具有相同 ID 但不同节点实例的现有节点 {xxx} ... 所以存在明显的冲突。
我发现这个 github ES issue and this