Elasticsearch Tribe节点和Kibana - 没有已知的主节点

时间:2016-05-05 08:37:46

标签: elasticsearch kibana-4

我正在使用Elasticsearch 2.3.1和Kibana 4.5。我有2个弹性搜索集群。

群集1 - 1个主节点,1个数据节点和1个客户端节点。 群集2 - 1主节点,1个数据节点和1个Tribe节点。

部落节点能够与两个集群中的节点通信。我在两个集群中也有2个索引,集群1中的cluster1index和集群2中的cluster2index。我能够查看索引:

yellow open cluster2index 5 1  22400 0  24.6mb  24.6mb 
yellow open cluster1index 5 1 129114 0 109.9mb 109.9mb 

但是,如果我尝试将Kibana与部落节点连接,我会收到错误

[2016-05-05 11:49:03,162][DEBUG][action.admin.indices.create] [tribe-node-MS2] no known master node, scheduling a retry
[2016-05-05 11:49:33,163][DEBUG][action.admin.indices.create] [tribe-node-MS2] timed out while retrying [indices:admin/create] after failure (timeout [30s])
[2016-05-05 11:49:33,165][WARN ][rest.suppressed          ] /.kibana Params: {index=.kibana}
MasterNotDiscoveredException[null]
    at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction$5.onTimeout(TransportMasterNodeAction.java:226)
    at org.elasticsearch.cluster.ClusterStateObserver$ObserverClusterStateListener.onTimeout(ClusterStateObserver.java:236)
    at org.elasticsearch.cluster.service.InternalClusterService$NotifyTimeout.run(InternalClusterService.java:804)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

我尝试将kibana连接到客户端节点,并且能够查看我的索引。在此之后,如果我将Kibana连接到部落节点,我就能够查看仪表板。

我的kibana配置:

 server.port: 5601
 server.host: "hostname"
 elasticsearch.url: "http://hostname:port"
 kibana.index: ".kibana"

我不确定为什么Kibana没有与部落节点合作,如果我在配置中遗漏任何东西。

我在弹性搜索论坛中读到了一个答案:

  

"关于kibana的问题,你不能直接用部落节点创建.kibana索引,因为它是一个部落节点:slight_smile:坐在没有master的集群中节点和数据节点。是的,在这种情况下,这个部落节点连接到两个集群,但是如果您假设它应该写入其中一个集群,则它不知道将.kibana索引放在何处。"

这是我无法在部落节点中直接创建kibana索引的原因,但是后来当索引已经创建时,我能够将Kibana指向部落节点吗?如果是这样,是否有任何配置可用于直接连接Kibana和部落节点?

1 个答案:

答案 0 :(得分:0)

您可以在this github issue以及this one中找到此行为的其他详细信息以及确认

作为摘要 ...

  

Tribe Node documentation表示您无法执行主级写操作,例如创建索引,这两者在首次使用Kibana 4时都是必需的。仅仅创建索引是不够的,因为还需要Put Mapping,并且也是主级写操作。

     

作为一种解决方法,首先调出Kibana 4实例,并将其配置为直接指向其中一个远程集群,以便初始化该集群中的.kibana索引。当Kibana 4连接到此单个群集时,创建并保存将用于其中的部落节点的索引设置/索引模式,并创建/保存至少1个可视化和1个仪表板。然后更新Kibana yml文件以重新配置其ES连接以指向部落节点并重新启动Kibana 4.

     

从那时起,您应该能够继续管理Kibana Dashboards&通过部落节点进行可视化,只要其中一个远程集群中存在.kibana索引。如果索引必须存在于多个集群中(例如,您正在执行快照/恢复以实现冗余),则指示Tribe节点更喜欢具有这些设置的主版本(其中clusterA包含主.kibana索引):

tribe:
  on_conflict: prefer_clusterA