节点在 Elasticsearch 上自动添加

Nodes Getting added automatically on Elasticsearch

我在 AWS.I 上设置了一个 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个节点:

为什么会这样?

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

网络统计-ntlp | awk '/[j]ava/'

如果 java 打开了两个以上的端口,那么你有多个 elasticsearch 实例 运行。在这里,我假设您 运行 只是该服务器上使用 java.

的 elastcisearch

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

  1. 使用以下命令杀死 master 上的所有 elasticsearch 实例

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

  1. 使用下面的命令检查上面的命令是否成功。你不应该得到任何输出

ps awk '/[e]lasticsearch/ && /[j]ava/{print $2}'

  1. 使用以下命令再次启动弹性搜索服务。我假设您已经创建了用于启动 elasticsearch
  2. 的服务

服务弹性搜索启动

  1. 现在再次使用以下命令验证您的 运行 elasticsearch 服务

ps awk '/[e]lasticsearch/ && /[j]ava/' | wc -l #你应该得到输出 1

网络统计-ntlp | awk '/[j]ava/' | wc -l # 你应该得到输出 2