Erreur de connexion refusée sur Elastic Search
Quand j'ai essayé de me connecter à Elastic Search en utilisant le {[0] } cela fonctionne bien.
Mais quand je lance le {[1] } il lance une erreur en disant connection refused port 9200
.
Comment résoudre cette erreur?
17 réponses
Par défaut, il doit se lier à toutes les adresses locales. Donc, en supposant que vous n'avez pas de problème de couche réseau avec les pare-feu, le seul paramètre ES que je peux penser à 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 pour votre réseau.
Update: Par commentaires dans ES 2.3, vous devez définir network.host
à la place.
Modifier /etc/elasticsearch/elasticsearch.yml
et ajoutez la ligne suivante:
network.host: 0.0.0.0
Cela "désélectionnera" ce paramètre et autorisera les connexions à partir d'autres adresses IP.
Tout essayé sur cette page, et seules les instructions de ici ont aidé.
Dans /etc/default/elasticsearch
, Assurez-vous que ceux-ci 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
appartient à l'utilisateur elasticsearch:
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
Dans mon cas, elasticsearch a été démarré. Mais avait encore
curl: (7) Failed to connect to localhost port 9200: Connection refused
La commande suivante a échoué
sudo service elasticsearch restart
Pour le faire fonctionner, j'ai dû courir à la place
sudo systemctl restart elasticsearch
Alors tout s'est bien passé.
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 avait trop peu de RAM et es ne pouvait pas démarrer.
sudo systemctl status elasticsearch
Ce qui précède vous montrera si es est en effet en cours d'exécution.
Aucune des solutions proposées ici n'a fonctionné pour moi, mais ce qui a finalement fonctionné a été 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 maintenant je peux le curl
à la fois à l'intérieur de la machine virtuelle et à l'extérieur. Pour une raison étrange, j'ai dû essayer quelques variantes différentes d'un appel curl
à l'intérieur de la machine virtuelle avant que cela ne fonctionne:
curl localhost:9200
curl http://localhost:9200
curl 127.0.0.1:9200
Remarque: j'utilise Elasticsearch 5.5 sur Ubuntu 14.04
Pourquoi ne pas commencer avec cette ligne de commande:
$ sudo service elasticsearch status
Je l'ai fait et obtenir:
"There is insufficient memory for the Java Runtime..."
, Puis j'ai édité /etc/elasticsearch/jvm.options
fichier:
...
################################################################
# 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.
Pour ce problème, j'ai dû 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
J'ai eu le même problème en refusant les connexions sur le port 9200.
Vérifiez l'état du service elasticsearch avec la commande sudo service elasticsearch status
. S'il présente une erreur et que vous lisez tout ce qui concerne Java, le problème est probablement votre mémoire jvm. Vous pouvez le modifier dans /etc/elasticsearch/jvm.options
. Pour une machine de mémoire RAM 1GB sur L'environnement Amazon, j'ai gardé ma configuration sur:
-Xms128m
-Xmx128m
Après avoir réglé cela et redémarré le service elasticsearch, cela a fonctionné comme un charme. La vérification Nmap et UFW (si vous utilisez un pare-feu local) devrait également être utile.
Ouvrez votre Dockerfile sousElasticsearch dossier et mettre à jour "Réseau.hôte = 0.0.0.0" avec " Réseau.hôte=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"
}
Changer le réseau.lier à 0.0.0.0 et http:port à 9200. L'adresse de liaison 0.0.0.0 signifie Toutes les adresses IPv4 sur la machine locale. Si un hôte a deux adresses IP, 192.168.1.1 et 10.1.2.1, et qu'un serveur s'exécutant sur l'hôte écoute la 0.0.0.0, il sera accessible à ces deux adresses IP.
Dans ce cas, vous devez d'abord vérifier la version 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) OpenJDK 64 bits serveur VM (construire 24.51-B03, mode mixte)
Ensuite, 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 numéro de sélection: 2
curl -XGET http://127.0.0.1:9200
Mes 2 cents,
Je viens de suivre la procédure d'installation sur Digital Ocean, apparemment le paquet disponible dans les repos n'est pas à jour, j'ai tout supprimé et suivi la procédure d'installation directement depuis Elastic Search et tout fonctionne maintenant, fondamentalement le comportement out of the box est sur un localhost pointant vers 9200. Même chose / problème trouvé avec Kibana, la solution pour moi était aussi, pour tout supprimer et juste suivre leur procédure, J'espère que cela sauve quelqu'un deux heures (le le temps que j'ai passé à comprendre comment configurer ELK!)
FR
Après avoir utilisé certaines des réponses ci-dessus, n'oubliez pas qu'après une installation apt, un redémarrage total peut être en ordre.
Juste pour ajouter à cela, je suis tombé sur de nombreux documents via google qui ont dit de définir le réseau.hôte à localhost.
Cela m'a donné la connexion infâme refusée. Vous devez utiliser une adresse IP (127.0.0.1), pas un nom de domaine complet.
Jeff
Mettez à jour votre jdk vers la dernière version minimale pour votre elasticsearch.
Assurez-vous que le port 9200
est ouvert pour mon cas, c'était une instance amazon donc quand je l'ai ouvert dans mon groupe de sécurité de la commande curl travaillé.