Подтвердить что ты не робот

Elasticsearch: не удалось подключиться к локальному порту 9200 - отказано в подключении

Когда я попытался подключиться к Elasticsearch с помощью curl http://localhost:9200 работает нормально.

Но когда я запускаю curl http://IpAddress:9200, он выдает ошибку, говорящую

Не удалось подключиться к локальному порту 9200: соединение отклонено

Как устранить эту ошибку?

4b9b3361

Ответ 1

По умолчанию он должен связываться со всеми локальными адресами. Поэтому, предполагая, что у вас нет проблемы сетевого уровня с брандмауэрами, единственная настройка ES, которую я могу проверить, - это network.bind_host и убедитесь, что она либо не установлена, либо установлена ​​на 0.0.0.0 или ::0, либо на правильный IP-адрес для вашей сети.

Обновление: для комментариев в ES 2.3 вы должны установить вместо network.host.

Ответ 2

Измените /etc/elasticsearch/elasticsearch.yml и добавьте следующую строку:

network.host: 0.0.0.0

Это будет "отменять" этот параметр и будет разрешать соединения с другими IP-адресами.

Ответ 3

Пробовал все на этой странице, и помогли только инструкции здесь.

в /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/

Ответ 4

В моем случае elasticsearch был запущен. Но все же был

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

Следующая команда была неудачной

sudo service elasticsearch restart

Чтобы заставить его работать, мне пришлось запускать вместо него

sudo systemctl restart elasticsearch

Тогда все прошло отлично.

Ответ 5

Почему бы вам не начать с этой командной строки:

$ sudo service elasticsearch status

Я сделал это и получил:

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

Затем я редактировал файл /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

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

...

Это работало как прелесть.

Ответ 6

Ни одно из предложенных решений здесь не работало, но в итоге он работал над добавлением следующего к elasticsearch.yml

network:
  host: 0.0.0.0
http:
  port: 9200

После этого я перезапустил службу, и теперь я могу curl ее как внутри VM, так и извне. По какой-то нечетной причине мне пришлось попробовать несколько разных вариантов вызова curl внутри виртуальной машины до ее работы:

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

Примечание. Я использую Elasticsearch 5.5 на Ubuntu 14.04

Ответ 7

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

убедитесь, что сервер запущен. Я видел эту проблему, когда моя виртуальная машина слишком LIM RAM и es не могли запускаться.

sudo systemctl status elasticsearch

выше будет показано, действительно ли es работает.

Ответ 8

Для этой проблемы мне пришлось использовать: sudo/usr/share/elasticsearch/bin/elasticsearch start

чтобы иметь возможность получить что-то через порты 9200/9300 (sudo netstat -ntlp) и ответ на:

curl -XGET http://localhost:9200

Ответ 9

Откройте Dockerfile в папке elasticsearch и обновите "network.host = 0.0.0.0" с помощью "network.host = 127.0.0.1" . Затем перезапустите контейнер. Проверьте соединение с завихрением.

$ 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"
}

Ответ 10

У меня была та же проблема, что и отказ от соединений на порте 9200. Проверьте статус службы elasticsearch с помощью команды sudo service elasticsearch status. Если он представляет ошибку и вы читаете что-либо, связанное с Java, вероятно, проблема заключается в вашей памяти jvm. Вы можете отредактировать его в /etc/elasticsearch/jvm.options. Для 1 ГБ оперативной памяти в среде Amazon я сохранил свою конфигурацию:

-Xms128m
-Xmx128m

После установки этого и перезапуска службы elasticsearch, он работал как шарм. Nmap и UFW (если вы используете локальный брандмауэр) также должны быть полезны проверки.

Ответ 11

Ничто там не могло мне помочь, но вот как я мог решить эту проблему на моем локальном Debian: sudo /usr/share/elasticsearch/bin/elasticsearch start

чтобы иметь возможность получить что-то на портах 9200/9300 (sudo netstat -ntlp) и ответить на:

curl -XGET http://localhost:9200

Ответ 12

Редактирование elasticsearch.yml и добавьте следующую строку

http.host: 0.0.0.0

network.host: 0.0.0.0 не работает для

Ответ 13

У меня возникла похожая проблема.

Вот как я это решил

Запустите служебную команду ниже, чтобы запустить ElasticSearch

sudo service elasticsearch start

ИЛИ

sudo systemctl start elasticsearch

Если вы все еще получаете сообщение об ошибке

curl: (7) Не удалось подключиться к локальному порту 9200: соединение отклонено

Запустите служебную команду ниже, чтобы проверить состояние ElasticSearch

sudo service elasticsearch status

ИЛИ

sudo systemctl status elasticsearch

Если вы получили ответ (Active: active (running)), подобный приведенному ниже, то вы ElasticSearch активны и работаете

● elasticsearch.service - Elasticsearch Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2019-09-21 11:22:21 WAT; 3s ago

Затем вы можете проверить, что ваш узел Elasticsearch работает, отправив HTTP-запрос на порт 9200 на локальном хосте, используя следующую команду:

curl http://localhost:9200

Иначе, если вы получите ответ с другим ответом, вам может потребоваться дальнейшая отладка, чтобы исправить его, но выполнение приведенной ниже команды поможет вам определить, какие предостережения удерживают службу ElasticSearch при запуске.

sudo service elasticsearch status

ИЛИ

sudo systemctl status elasticsearch

Если вы хотите остановить службу ElasticSearch, просто запустите приведенную ниже команду службы;

sudo service elasticsearch stop

ИЛИ

sudo systemctl stop elasticsearch

N/B: Возможно, вам придется запускать команду sudo service elasticsearch status ИЛИ sudo systemctl status elasticsearch каждый раз, когда вы сталкиваетесь с ошибкой, чтобы сообщить о состоянии ElasticSearch сервис.

Это также относится к Кибане, запускайте команду sudo service kibana status ИЛИ sudo systemctl status kibana каждый раз, когда вы сталкиваетесь с ошибкой, чтобы узнать состояние Кибаны обслуживание.

Это все.

Надеюсь, это поможет.

Ответ 14

В этом случае, прежде всего, вам нужно проверить версию java, используя следующую команду:

java -version

после запуска этой команды вы получите что-то вроде этого:

версия java "1.7.0_51" Рабочая среда OpenJDK (rhel-2.4.5.5.el7-x86_64 u51-b31) OpenJDK 64-Bit Server VM (сборка 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

Ответ 15

Мои 2 цента,

Я просто следовал процедуре установки в Digital Ocean, по-видимому, пакет, доступный в репозиториях, не обновлялся, я удалил все и следил за процедурой установки непосредственно из Elastic Search, и все работает сейчас, в основном из коробки поведение находится на локальном хосте, указывающем на 9200. То же, что и проблема с Kibana, решение для меня было слишком, чтобы удалить все и просто следовать их процедуре. Надеюсь, это спасет кого-то два часа (время, которое я потратил на выяснение того, как настроить ELK!)

ан

Ответ 16

Измените network.bind на 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-адресах.

Ответ 17

Если вы столкнулись с ошибкой Соединение отклонено, просто выполните приведенную ниже команду, чтобы проверить состояние службы ElasticSearch

sudo service elasticsearch status

Это поможет вам определить состояние службы ElasticSearch и узнать, что с этим делать.

Ответ 18

После использования некоторых из ответов выше, не забывайте, что после удачной установки может потребоваться полная перезагрузка.

Ответ 19

Чтобы добавить это, я наткнулся на множество документов через Google, в которых говорится, что для network.host нужно указать localhost.

Это дало мне печально известную связь. Вы должны использовать IP-адрес (127.0.0.1), а не FQDN.

Джефф

Ответ 20

Обновите ваш jdk до последней минимальной версии для вашего эластичного поиска.

Ответ 21

Убедитесь, что порт 9200 открыт для моего случая, это был экземпляр Amazon, поэтому, когда я открыл его в своей группе безопасности, команда curl работала.

Ответ 22

Отключение SELinux сработало для меня, хотя я этого не советую - я сделал это только для PoC

Ответ 23

Моя проблема была в том, что я не мог работать с localhost мне нужно было установить для него локальный IP-адрес

network.bind_host: 127.0.0.1