Elasticsearch Cluster - 没有已知的主节点,安排重试

时间:2015-02-12 09:24:27

标签: elasticsearch

我有一台运行elasticsearch和kibana的服务器。我添加了第二个节点以形成集群,但只希望第二个节点从主节点复制数据。

根据有关如何执行此操作的有限文档,我在第二个问题上遇到问题

[DEBUG][action.admin.indices.get ] [Match] no known master node, scheduling a retry

我无法确定两台服务器的最佳配置,但这是我到目前为止所做的:

主节点配置:

cluster.name: elasticsearch
node.master: true
path.data: /local00/elasticsearch/
path.work: /local00/el_temp/
network.host: 0.0.0.0
http.port: 9200
script.disable_dynamic: true

节点2

cluster.name: elasticsearch
node.master: false
node.data: true
index.number_of_shards: 5
index.number_of_replicas: 1
path.data: /local00/elasticsearch/
path.work: /local00/el_temp/
network.host: 0.0.0.0
http.port: 9200
script.disable_dynamic: true

我假设我在某个地方缺少额外的配置。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:7)

使用此处How to set up ES cluster?回答的以下更改:

节点1:

cluster.name: mycluster
node.name: "node1"
node.master: true
node.data: true
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["node1.example.com"]

节点2:

cluster.name: mycluster
node.name: "node2"
node.master: false
node.data: true
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["node1.example.com"]

答案 1 :(得分:1)

如果您尝试将其他节点连接到已存在的ES群集,请确保此节点还具有与其他节点相同的所有ES插件。如果不是 - 节点无法完全连接(其他节点可以将其显示为已连接,但无法在其上启动http命令)到ES群集,并出现如下错误:

[2016-07-21 11:56:59,564][DEBUG][action.admin.cluster.health] [dev-marvel1] no known master node, scheduling a retry
[2016-07-21 11:57:05,313][INFO ][rest.suppressed          ] /_cluster/health Params: {pretty=true}
MasterNotDiscoveredException[waited for [30s]]
        at org.elasticsearch.action.support.master.TransportMasterNodeAction$4.onTimeout(TransportMasterNodeAction.java:154)
        at org.elasticsearch.cluster.ClusterStateObserver$ObserverClusterStateListener.onTimeout(ClusterStateObserver.java:239)
        at org.elasticsearch.cluster.service.InternalClusterService$NotifyTimeout.run(InternalClusterService.java:574)
        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)

在我的情况下,问题在于许可插件。删除后一切都很好。

答案 2 :(得分:-2)

如果由于在本地计算机上工作而进行搜索,则最快的解决方案是通过分别杀死所有进程来释放挂起的节点。我使用搜索了这些过程。

ps -alx | grep elastic
kill -9 {pid}