rehusada - Error de conexión rechazada en Elasticsearch
elasticsearch connection refused (20)
¿Por qué no comienzas con esta línea de comandos?
$ sudo service elasticsearch status
Lo hice y obtuve:
"There is insufficient memory for the Java Runtime..."
Luego
/etc/elasticsearch/jvm.options
archivo
/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
################################################################
...
Funcionó como por arte de magia.
Cuando intenté conectarme a Elasticsearch usando el
curl http://localhost:9200
funciona bien.
Pero cuando ejecuto el
curl http://IpAddress:9200
arroja un error que dice que la
connection refused port 9200
.
¿Cómo resolver este error?
Abra su Dockerfile en la carpeta elasticsearch y actualice "network.host = 0.0.0.0" con "network.host = 127.0.0.1" . Luego reinicie el contenedor. Comprueba tu conexión con 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"
}
Actualice su jdk a la última versión mínima para su elasticsearch.
Asegúrese de que el puerto
9200
esté abierto para mi caso, era una instancia de Amazon, así que cuando lo abrí en mi grupo de seguridad, el comando curl funcionó.
Cambie network.bind a 0.0.0.0 y http: port a 9200. La dirección de enlace 0.0.0.0 significa todas las direcciones IPv4 en la máquina local. Si un host tiene dos direcciones IP, 192.168.1.1 y 10.1.2.1, y un servidor que se ejecuta en el host escucha en 0.0.0.0, será accesible a ambas IP.
De forma predeterminada, debe vincularse a todas las direcciones locales.
Por lo tanto, suponiendo que no tenga un problema de capa de red con firewalls, la única configuración de ES que puedo comprobar es
network.bind_host
y asegúrese de que no esté configurada o establecida en
0.0.0.0
o
::0
o en dirección IP correcta para su red.
Actualización: según los comentarios en ES 2.3, debe configurar
network.host
lugar.
Desactivar SELinux funcionó para mí, aunque no lo sugiero, lo hice solo por un PoC
Después de utilizar algunas de las respuestas anteriores, no olvide que después de una instalación adecuada, un reinicio total podría estar en orden.
Edite
/etc/elasticsearch/elasticsearch.yml
y agregue la siguiente línea:
network.host: 0.0.0.0
Esto "desarmará" este parámetro y permitirá conexiones desde otras IP.
Edite
elasticsearch.yml
y agregue la siguiente línea
http.host: 0.0.0.0
network.host: 0.0.0.0
no funcionó para
En este caso, antes que nada, debe verificar la versión de Java utilizando el siguiente comando:
java -version
después de ejecutar este comando, obtienes algo como esto:
Java versión "1.7.0_51" OpenJDK Runtime Environment (rhel-2.4.5.5.el7-x86_64 u51-b31) OpenJDK 64-Bit Server VM (compilación 24.51-b03, modo mixto)
luego usa este comando:
update-alternatives --config java
y seleccione la versión a continuación
* + 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
Ingrese para mantener la selección actual [+], o escriba el número de selección: 2
curl -XGET http://127.0.0.1:9200
En mi caso se inició elasticsearch. Pero todavía tenía
curl: (7) Failed to connect to localhost port 9200: Connection refused
El siguiente comando no tuvo éxito
sudo service elasticsearch restart
Para que funcione, tuve que correr en su lugar
sudo systemctl restart elasticsearch
Entonces todo salió bien.
Intenté todo en esta página, y solo las instrucciones de here ayudaron.
en
/etc/default/elasticsearch
, asegúrese de que no estén comentados:
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
asegúrese de que
/var/lib/elasticsearch
sea propiedad del usuario de elasticsearch:
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
Mi problema era que no podía trabajar con
localhost
. Necesitaba configurarlo en la dirección IP de localhost.
network.bind_host: 127.0.0.1
Mis 2 centavos
Simplemente seguí el procedimiento de instalación en Digital Ocean, aparentemente el paquete disponible en los repositorios no está actualizado, eliminé todo y seguí el procedimiento de instalación directamente desde Elastic Search y todo funciona ahora, básicamente el comportamiento listo para usar está activado un localhost apuntando a 9200. El mismo problema / problema encontrado con Kibana, la solución para mí también fue eliminar todo y simplemente seguir su procedimiento. Espero que esto le ahorre a alguien dos horas (¡el tiempo que pasé descubriendo cómo configurar ELK!)
en
Ninguna de las soluciones propuestas aquí funcionó para mí, pero lo que finalmente lo hizo funcionar fue agregar lo siguiente a
elasticsearch.yml
network:
host: 0.0.0.0
http:
port: 9200
Después de eso, reinicié el servicio y ahora puedo
curl
tanto dentro de la VM como externamente.
Por alguna extraña razón, tuve que probar algunas variantes diferentes de una llamada
curl
dentro de
la VM antes de que funcionara:
curl localhost:9200
curl http://localhost:9200
curl 127.0.0.1:9200
Nota: estoy usando Elasticsearch 5.5 en Ubuntu 14.04
Para este problema, tuve que usar:
sudo /usr/share/elasticsearch/bin/elasticsearch start
para poder obtener algo en los puertos 9200/9300 (sudo netstat -ntlp) y una respuesta a:
curl -XGET
http://localhost:9200
Solo para agregar esto, me encontré con muchos documentos a través de google que decían establecer network.host en localhost.
Hacerlo me dio la conexión infame rechazada. Debe usar una dirección IP (127.0.0.1), no un FQDN.
Jeff
Tuve el mismo problema al rechazar las conexiones en el puerto 9200.
Verifique el estado del servicio elasticsearch con el comando
sudo service elasticsearch status
.
Si presenta un error y lee algo relacionado con Java, probablemente el problema sea su memoria jvm.
Puede editarlo en
/etc/elasticsearch/jvm.options
.
Para una máquina de memoria RAM de 1 GB en el entorno de Amazon, mantuve mi configuración en:
-Xms128m
-Xmx128m
Después de configurar eso y reiniciar el servicio elasticsearch, funcionó de maravilla. La comprobación de Nmap y UFW (si usa un firewall local) también debería ser útil.
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error=''Cannot allocate memory'' (errno=12)
asegúrese de que se inicie el servidor. He visto este problema cuando mi máquina virtual tenía muy poca RAM y no podía iniciarse.
sudo systemctl status elasticsearch
lo anterior le mostrará si es efectivamente ejecutado.