web-dev-qa-db-fra.com

Erreur de connexion refusée sur Elastic Search

Lorsque j'ai essayé de me connecter à Elastic Search à l'aide du fichier curl http://localhost:9200, cela fonctionne bien.

Mais lorsque je lance le curl http://IpAddress:9200, une erreur est générée en indiquant connection refused port 9200.

Comment résoudre cette erreur?

73
chinna2580

Par défaut, il devrait être lié à toutes les adresses locales. Donc, en supposant que vous n'ayez pas de problème de couche réseau avec les pare-feu, le seul paramètre ES que je puisse vérifier est network.bind_Host et assurez-vous qu'il n'est pas défini ou qu'il est défini sur 0.0.0.0 ou ::0 ou à l'adresse IP correcte de votre réseau .

Mise à jour: par commentaires dans ES 2.3, vous devez définir network.Host à la place. 

64
Andrew White

Éditez /etc/elasticsearch/elasticsearch.yml

Cela "désactivera" ce paramètre et autorisera les connexions à partir d'autres IP.

66
Ramon

Tout essayé sur cette page, et seules les instructions de ici aidé.

dans /etc/default/elasticsearch, assurez-vous qu'ils ne sont pas commentés:

START_DAEMON=true
ES_USER=elasticsearch
ES_GROUP=elasticsearch
LOG_DIR=/var/log/elasticsearch
DATA_DIR=/var/lib/elasticsearch
WORK_DIR=/tmp/elasticsearch
CONF_DIR=/etc/elasticsearch
CONF_FILE=/etc/elasticsearch/elasticsearch.yml
RESTART_ON_UPGRADE=true

assurez-vous que /var/lib/elasticsearch est la propriété de l'utilisateur elasticsearch:

chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
20
dikirill

Dans mon cas, elasticsearch a été lancé . Mais il me restait 

curl: (7) Failed to connect to localhost port 9200: Connection refused

La commande suivante a échoué

Sudo service elasticsearch restart

Pour que cela fonctionne, je devais courir à la place

Sudo systemctl restart elasticsearch

Ensuite, tout s'est bien passé.

18
Kalanit

Aucune des solutions proposées ici ne fonctionnait pour moi, mais ce qui a finalement fonctionné, c’est d’ajouter ce qui suit à elasticsearch.yml

network:
  Host: 0.0.0.0
http:
  port: 9200

Après cela, j'ai redémarré le service et je peux maintenant curl à la fois depuis la VM et en externe. Pour une raison étrange, j'ai dû essayer différentes variantes d'un appel curl inside the VM avant que cela fonctionne:

curl localhost:9200
curl http://localhost:9200
curl 127.0.0.1:9200

Note: J'utilise Elasticsearch 5.5 sur Ubuntu 14.04

13
Kimberly W

Pourquoi ne commencez-vous pas avec cette ligne de commande:

$ Sudo service elasticsearch status

Je l'ai fait et j'ai:

"There is insufficient memory for the Java Runtime..."

Puis j'ai édité le fichier /etc/elasticsearch/jvm.options:

...

################################################################

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

#-Xms2g
#-Xms2g

-Xms512m
-Xmx512m

################################################################

...

Cela a fonctionné comme un charme.

13
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)

assurez-vous que le serveur est démarré. J'ai vu ce problème quand ma machine virtuelle était trop petite RAM et que je ne pouvais pas démarrer.

Sudo systemctl status elasticsearch

ce qui précède vous montrera si es est effectivement en cours d'exécution.

12
Jes Chergui

Pour ce problème, je devais utiliser: Sudo /usr/share/elasticsearch/bin/elasticsearch start

pour pouvoir obtenir quelque chose sur les ports 9200/9300 (Sudo netstat -ntlp) et une réponse à:

curl -XGET http://localhost:9200

7
DependencyHell

J'ai eu le même problème en refusant les connexions sur le port 9200 . Vérifiez le statut du service elasticsearch avec la commande Sudo service elasticsearch status. Si cela présente une erreur et que vous lisez tout ce qui a trait à Java, le problème vient probablement de votre mémoire jvm. Vous pouvez le modifier dans /etc/elasticsearch/jvm.options. Pour une machine de mémoire RAM de 1 Go sous environnement Amazon, j'ai conservé ma configuration sous:

-Xms128m
-Xmx128m

Après avoir défini cela et redémarré le service elasticsearch, cela a fonctionné à merveille. Les vérifications Nmap et UFW (si vous utilisez un pare-feu local) devraient également être utiles.

3
jefferson.macedo

Ouvrez votre dossier Dockerfile sous elasticsearch et mettez à jour "network.Host = 0.0.0.0" avec "network.Host = 127.0.0.1" . Puis redémarrez le conteneur. Vérifiez votre connexion avec curl.

$ curl http://docker-machine-ip:9200
{
  "name" : "vI6Zq_D",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "hhyB_Wa4QwSX6zZd1F894Q",
  "version" : {
    "number" : "5.2.0",
    "build_hash" : "24e05b9",
    "build_date" : "2017-01-24T19:52:35.800Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.0"
  },
  "tagline" : "You Know, for Search"
}
2
javasenior

Editez elasticsearch.yml et ajoutez la ligne suivante

http.Host: 0.0.0.0

network.Host: 0.0.0.0 n'a pas fonctionné

2
Mike

Dans ce cas, vous devez d’abord vérifier la version de Java en utilisant la commande ci-dessous:

Java -version

après avoir exécuté cette commande, vous obtenez quelque chose comme ceci: 

Version Java "1.7.0_51" Environnement d'exécution OpenJDK (rhel-2.4.5.5.el7-x86_64 u51-b31) Serveur OpenJDK 64 bits VM (version 24.51-b03, mode mixte)

puis utilisez cette commande:

update-alternatives --config Java

et sélectionnez la version ci-dessous

* + 1 /usr/lib/jvm/Java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64/jre/bin/Java 2 /usr/Java/jdk1.8.0_73/jre/bin/Java

Entrez pour conserver la sélection actuelle [+] ou tapez le numéro de sélection: 2

curl -XGET http://127.0.0.1:9200
1
saurabh cse

Mes 2 centimes,

Je viens de suivre la procédure d'installation sur Digital Ocean, apparemment le paquet disponible dans le dépôt n'est pas à jour, j'ai tout supprimé et suivi la procédure d'installation directement à partir de Elastic Search et tout fonctionne à présent, le comportement clé en main est activé un localhost pointant vers 9200. Même chose/problème trouvé avec Kibana, la solution pour moi était aussi de tout supprimer et de suivre leur procédure, espérons que cela économise deux heures à quelqu'un (le temps que j'ai passé à comprendre comment installer ELK!)

en

1
ximbal

Modifiez network.bind en 0.0.0.0 et http: port en 9200. L'adresse de liaison 0.0.0.0 désigne toutes les adresses IPv4 sur l'ordinateur local. Si un hôte a deux adresses IP, 192.168.1.1 et 10.1.2.1, et qu'un serveur fonctionnant sur l'hôte écoute 0.0.0.0, il sera accessible à ces deux adresses IP.

0
Siddu

Désactiver SELinux a fonctionné pour moi, bien que je ne le suggère pas - je ne l'ai fait que pour un PoC

0
Adhitya Ganesan

Mettez à jour votre jdk vers la dernière version minimale pour votre recherche elasticsearch.

0
Zhu Xiaohu

Mon problème était que je ne pouvais pas travailler avec localhost je devais le configurer à l'adresse IP de localhost

network.bind_Host: 127.0.0.1

0
Mahdi Younesi

Assurez-vous que le port 9200 est ouvert dans mon cas. Il s’agissait d’une instance Amazon. Lorsque je l’ai ouvert dans mon groupe de sécurité, la commande curl fonctionnait.

0
Buhiire Keneth

Après avoir utilisé certaines des réponses ci-dessus, n'oubliez pas qu'après une installation d'apt, un redémarrage total peut être nécessaire.

0
Altus

Pour ajouter quelque chose à ce sujet, j'ai rencontré de nombreux documents via Google qui disaient de configurer network.Host to localhost.

Cela m'a donné la fameuse connexion refusée. Vous devez utiliser une adresse IP (127.0.0.1) et non un nom de domaine complet.

Jeff

0
J.F.Gratton