Elasticsearch: не удалось подключиться к локальному порту 9200 - отказано в подключении
Когда я попытался подключиться к Elasticsearch с помощью
curl http://localhost:9200
работает нормально.
Но когда я запускаю curl http://IpAddress:9200
, он выдает ошибку, говорящую
Не удалось подключиться к локальному порту 9200: соединение отклонено
Как устранить эту ошибку?
Ответы
Ответ 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