为什么我的非主节点无法从Elasticsearch中的主节点获取索引?

时间:2016-01-20 20:56:34

标签: elasticsearch

我一直在努力为工作设置ELK堆栈。到目前为止,一切都在游动,所以我现在正在处理我的设置的下一部分:创建一个集群。

我更改了配置文件(如下所示),将我的单个节点变为群集主节点:

elasticsearch.yml (master)
cluster.name: skunkworks
node.name: node-1
node.master: true
node.data: true
network.host: _non_loopback:ipv4_
network.bind_host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "<IP of slave server deleted>"]
discovery.zen.ping.multicast.enabled: false

然后我重新启动了主节点。然后,我使用以下配置在从属节点上设置elasticsearch:

elasticsearch.yml (slave)
cluster.name: skunkworks
node.name: node-3
node.master: false
node.data: true
network.host: _non_loopback:ipv4_
network.bind_host: 0.0.0.0
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["<IP of master server deleted>", "127.0.0.1"]
discovery.zen.fd.ping_retries: 20
discovery.zen.fd.ping_timeout: "1m"

然后我启动了奴隶机器。检查主节点上的kopf插件,我可以看到node-3已加入集群。其中一个未分配的分片正在分配给从属分区。这永远不会完成(甚至不会开始)。

检查我的slave的数据目录,我可以看到已经创建了集群/节点的目录,但是没有索引的跟踪。

检查我的从属节点上的日志,我看到以下内容:

[2016-01-20 20:39:58,954][DEBUG][action.admin.indices.stats] [node-3] [indices:monitor/stats] failed to execute operation for shard [[logstash-2016.01.20][0], node[c2IE_LtZQGSVPoaFyqvPlA], [R], v[9], s[INITIALIZING], a[id=Ap12JxKSS-mHHchnwaLWCw], unassigned_info[[reason=NODE_LEFT], at[2016-01-20T20:03:11.455Z], details[node_left[0N9oUHcrRT6i-DD5VX2BeQ]]]]
[logstash-2016.01.20][[logstash-2016.01.20][0]] BroadcastShardOperationFailedException[operation indices:monitor/stats failed]; nested: IndexNotFoundException[no such index];

...和...

[2016-01-20 20:39:48,822][DEBUG][action.admin.indices.stats] [node-3] [indices:monitor/stats] failed to execute operation for shard [[.kibana][0], node[c2IE_LtZQGSVPoaFyqvPlA], [R], v[9], s[INITIALIZING], a[id=yk8xq3SGSOquHXcY_Ouy3Q], unassigned_info[[reason=NODE_LEFT], at[2016-01-20T20:03:11.455Z], details[node_left[0N9oUHcrRT6i-DD5VX2BeQ]]]]
[.kibana][[.kibana][0]] BroadcastShardOperationFailedException[operation indices:monitor/stats failed]; nested: IndexNotFoundException[no such index];

......重复恶心。

我已经用telnet检查过以确保我可以从另一个节点到达每个节点并且所有端口都是打开的。 node-3在其数据目录中没有任何数据,我认为这些数据将被主数据填充。

从NODE_LEFT异常中,我假设node-3被踢出池...但是node-1看到它直到我关闭node-3上的elasticsearch(此时,有一个日志行断开状态)。

有没有人知道我的群集为什么会形成,但是从属节点不会接受数据?

更新:如果我对我的从属节点进行运行状况检查,则会返回master not found错误。这对我来说似乎很合理,除了主人理论上可以看到它。

1 个答案:

答案 0 :(得分:1)

我花了一些时间挖掘日志级别转向DEBUG,这是我本来应该做的。我以前在主节点上安装了shield,但在设置集群之前已将其删除,以减少我玩杂耍的变量数量。但是,我还没有摆脱许可插件目录。

结果,我的主人在与我的奴隶沟通时一直出错,但它没有出现在INFO级别。删除许可证目录完全消除了这个问题。