节点在Elasticsearch上自动添加

时间:2015-12-24 20:26:23

标签: amazon-web-services elasticsearch elasticsearch-plugin

我在AWS上设置了elasticsearch集群。我已经设置了三个名为的UBUNTU实例: elasticsearch1,elasticsearch2,elasticsearch3

我已使用Elasticsearch Cloud AWS插件进行配置和节点发现。

理想情况下应该显示三个节点,但是当我运行时:

curl -XGET 'http://172.30.0.17:9200/_cluster/health?pretty=true'

我明白了:

{
  "cluster_name" : "LogstashCluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 5,
  "number_of_data_nodes" : 5,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

elasticsearch1的主节点创建了3个节点:

enter image description here

为什么会这样?

1 个答案:

答案 0 :(得分:2)

正如你所说,你得到了ps aux |的输出grep elasticsearch |主服务器(172.30.0.17)上的wc -l为4,很明显,master上运行了多个elasticsearch实例实例。另一种通过检查java打开的tcp端口来验证这一点的方法。默认情况下,elasticsearch侦听两个端口,即9200和9300.您可以使用以下命令检查正在运行的TCP端口列表

netstat -ntlp | awk' / [j] ava /'

如果您通过java打开了两个以上的端口,那么您将运行多个elasticsearch实例。在这里,我假设你只在运行java的服务器上运行弹性网。

要解决此问题,请执行以下步骤

  1. 使用以下命令
  2. 终止主服务器上的所有elasticsearch实例

    ps auxw | awk' / [e] lasticsearch /&& / [j] ava / {print $ 2}' | xargs kill -9

    1. 使用以下命令检查上述命令是否成功。你不应该得到任何输出
    2. ps auxw | awk' / [e] lasticsearch /&& / [j] ava / {print $ 2}'

      1. 使用以下命令再次启动elasticsearch服务。我假设您已经创建了一个用于启动elasticsearch的服务
      2. service elasticsearch start

        1. 现在再次使用以下命令验证您正在运行的elasticsearch服务
        2. ps auxw | awk' / [e] lasticsearch /&& / [j]的AVA /' | wc -l#你应该输出为1

          netstat -ntlp | awk' / [j] ava /' | wc -l#你应该输出为2