Ошибка отказа соединения при эластичном поиске
когда я попытался подключиться к Elastic Search с помощью
curl http://localhost:9200
Он работает нормально.
но когда я запускаю curl http://IpAddress:9200
он бросает сообщение об ошибкеconnection refused port 9200
.
как устранить эту ошибку?
17 ответов:
по умолчанию он должен привязываться ко всем локальным адресам. Итак, предполагая, что у вас нет проблемы сетевого уровня с брандмауэрами, единственная настройка ES, которую я могу проверить, - это
network.bind_host
и убедитесь, что он либо не установлен, либо установлен в0.0.0.0
или::0
или в правильный IP-адрес для вашей сети.обновление: за комментарии в ES 2.3 вы должны установить .
редактировать
/etc/elasticsearch/elasticsearch.yml
и добавить следующую строку:network.host: 0.0.0.0это "отключит" этот параметр и позволит подключаться с других IP-адресов.
пробовал все на этой странице, и только инструкции от здесь помогло.
на
/etc/default/elasticsearch
, убедитесь, что они не комментируются: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
убедится
/var/lib/elasticsearch
принадлежит пользователю elasticsearch:chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
в моем случае elasticsearch был запущен. Но все равно пришлось
curl: (7) Failed to connect to localhost port 9200: Connection refused
следующая команда не удалась
sudo service elasticsearch restart
чтобы заставить его работать, мне пришлось бежать вместо
sudo systemctl restart elasticsearch
потом все прошло нормально.
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
убедитесь, что сервер запущен. Я видел эту проблему, когда у моей виртуальной машины было слишком мало оперативной памяти, и es не мог запуститься.
sudo systemctl status elasticsearch
выше будет показано, если es действительно работает.
ни одно из предложенных здесь решений не работало для меня, но то, что в конечном итоге заставило его работать, добавляло следующее к
elasticsearch.yml
network: host: 0.0.0.0 http: port: 9200
после этого я перезапустил службу и теперь я могу
curl
это как внутри виртуальной машины, так и снаружи. По какой-то странной причине, мне пришлось попробовать несколько разных вариантовcurl
вызов внутри виртуальная машина до этого работала:curl localhost:9200 curl http://localhost:9200 curl 127.0.0.1:9200
Примечание: я использую Elasticsearch 5.5 на Ubuntu 14.04
Почему бы тебе не начать с этой командной строки:
$ sudo service elasticsearch status
Я сделал это и сделать:
"There is insufficient memory for the Java Runtime..."
затем я отредактировал
/etc/elasticsearch/jvm.options
file:... ################################################################ # Xms represents the initial size of total heap space # Xmx represents the maximum size of total heap space #-Xms2g #-Xms2g -Xms512m -Xmx512m ################################################################ ...
это работает как шарм.
для этой проблемы мне пришлось использовать :
sudo /usr/share/elasticsearch/bin/elasticsearch start
чтобы иметь возможность получить что-то на портах 9200/9300 (sudo netstat-ntlp) и ответ на:
curl -XGET http://localhost:9200
у меня была такая же проблема с отказом от соединений на порту 9200. Проверьте состояние службы elasticsearch с помощью команды
sudo service elasticsearch status
. Если он представляет ошибку, и Вы читаете что-либо, связанное с Java, вероятно, проблема заключается в вашей памяти jvm. Вы можете редактировать его в/etc/elasticsearch/jvm.options
. Для машины с оперативной памятью 1GB в среде Amazon я сохранил свою конфигурацию:-Xms128m -Xmx128m
после установки этого и перезапуска службы elasticsearch он работал как шарм. Nmap и UFW (если вы используете локальный брандмауэр) проверка также должна быть полезной.
открыть Dockerfile под elasticsearch папка и обновление сеть".узел=0.0.0.0" С сеть".host=127.0.0.1". Затем перезапустите контейнер. Проверьте соединение с 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" }
изменить сети.привязка к 0.0.0.0 и http:port до 9200. Адрес привязки 0.0.0.0 означает все IPv4-адреса на локальном компьютере. Если хост имеет два IP-адреса, 192.168.1.1 и 10.1.2.1, и сервер, работающий на хосте, слушает 0.0.0.0, он будет доступен на обоих этих IP-адресах.
В этом случае, прежде всего нужно проверить версию Java, используя следующую команду:
java -version
после выполнения этой команды вы получите что-то вроде этого:
версия java " 1.7.0_51" Во время выполнения OpenJDK в окружающей среде (на RHEL-2.4.5.5.el7-x86_64 u51-b31) 64-разрядная серверная виртуальная машина OpenJDK (сборка 24.51-b03, смешанный режим)
затем используйте эту команду:
update-alternatives --config java
и выберите версию ниже
*+ 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
введите, чтобы сохранить текущий выбор[+], или введите номер выбора: 2
curl -XGET http://127.0.0.1:9200
мои 2 цента,
Я просто следовал процедуре установки на Digital Ocean, по-видимому, пакет, доступный в репозиториях, не обновлен, я удалил все и следовал процедуре установки непосредственно из Elastic Search, и все работает сейчас, в основном поведение out of the box находится на локальном хосте, указывающем на 9200. То же самое / проблема найдена с Kibana, решение для меня тоже было, чтобы удалить все и просто следовать их процедуре, надеюсь, это спасет кого-то два часы (время, которое я потратил, выясняя, как настроить ELK!)
en
после использования некоторых из ответов выше, не забывайте, что после установки apt, полная перезагрузка может быть в порядке.