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

Я установил Elasticsearch на сервер EC2 Ubuntu 14.

Я вижу, что он работает:

elastic@ip-xxx-xx-xx-xxx:~$ curl -get localhost:9200
{
  "name" : "ip-xxx-xx-xx-xxx",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "V6axWUV9SoqABC8sX62XMQ",
  "version" : {
    "number" : "7.0.1",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "e4efcb5",
    "build_date" : "2019-04-29T12:57:03.145736Z",
    "build_snapshot" : false,
    "lucene_version" : "8.0.0",
    "minimum_wire_compatibility_version" : "6.7.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Я добавил его в группу безопасности:

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

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

C:\>curl -get http://XX.XX.XXX.XX:9200/
curl: (7) Failed to connect to XX.XX.XXX.XX port 9200: Connection refused

netstat -nlp | grep 9200:

tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      29467/java   
tcp6       0      0 ::1:9200                :::*                    LISTEN      29467/java 

Это содержимое elasticsearch.yml после удаления всех комментариев:

path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

пожалуйста, запустите эту команду «netstat -nlp | grep 9200» и поделитесь выводом

hamid bayat 26.05.2019 11:47

и, пожалуйста, поделитесь файлом elasticsearch.yml

hamid bayat 26.05.2019 11:49

@hamidbayat Я добавил результат от netstat -nlp |grep 9200

Alon 26.05.2019 11:58

@hamidbayat, а также elasticsearch.yml

Alon 26.05.2019 12:02

эта ошибка возникает из-за команды сервера, а не команды curl. вы уверены, что порт прослушивания 9200? попробуйте: netstat -ln | grep 9200 и посмотрите статус этого порта.

Majid Roustaei 26.05.2019 11:50

Я обновил свой вопрос, включил результат netstat -nlp |grep 9200

Alon 26.05.2019 11:59

@ Алон, можешь добавить http-порт в свою группу безопасности AWS?

Amit 26.05.2019 18:11

@AmitKhandelwal, если я выберу HTTP, а не TCP, он автоматически выберет порт 80 и не позволит мне его изменить.

Alon 26.05.2019 18:35

нет необходимости раскомментировать http.port. по умолчанию установлено значение 9200.

hamid bayat 29.05.2019 08:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
9
792
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

добавьте следующую строку в elasticsearch.yml и перезапустите службу elasticsearch:

network.host: xxx.xxx.xxx.xxx 

xxx.xxx.xxx.xxx — IP-адрес вашего сервера elasticsearch.

Теперь я не могу подключиться как с удаленного, так и с одной и той же машины. Я также попытался раскомментировать настройку http.port.

Alon 26.05.2019 17:58

@Alon Проблема еще не решена? можете ли вы отправить netstat -nlp |grep 9200 после изменения настроек и перезапуска службы?

hamid bayat 29.05.2019 08:08

кажется, что AWS не позволяет использовать IP в качестве network.host. пожалуйста, попробуйте это и дайте мне знать, если это работает: network.host: _ec2_

hamid bayat 29.05.2019 09:03
Ответ принят как подходящий

Я решил проблему.

Первое, что мне пришлось настроить, это network.host, но очень важно отметить, что он не работал с IP-адресом, к которому я пытался подключиться с клиента, потому что это общедоступный IP-адрес EC2. Мне пришлось использовать частный IP-адрес EC2.

Но потом я продолжал получать ту же ошибку, и я обнаружил, что алгоритм координации кластера изменился в Elasticsearch 7.0 и для его безопасности требуется определенная настройка. Elastic ослабляет это требование (то есть они работают в менее безопасном режиме), когда кто-то привязывается только к локальному хосту, но если / когда кто-то изменяет network.host, они обеспечивают безопасную настройку кластера.

Итак, поскольку я использую кластер с одним узлом, мне пришлось добавить следующий параметр в раздел Discovery в elasticsearch.yml:

discovery.type: single-node

Отлично, вы сэкономили несколько часов на моей отладке, проголосовали за вопрос и ответ

Amit 13.06.2019 19:23

было бы также здорово, если бы вы могли связать официальные документы ES, в которых есть подробности об измененном алгоритме координации кластера и где они предлагают discovery.type: single-node

Amit 14.06.2019 07:29

Другие вопросы по теме