Как получить доступ к удаленному серверу Elasticsearch (НА Google Compute Engine) с моего локального компьютера

Я провел 2 дня и много искал в stackoverflow и на многих форумах, но не смог заставить его работать и все еще запутался. Я буду держать вещи простыми.

Я использую ElasticSearch для базы данных моего веб-приложения Laravel (PHP Framework) в качестве бэкэнда.

Elasticsearch развернут на экземпляре вычислительного движка Google, то есть на сервере UBUNTU 16.0 LTS.

я хочу сделать запрос RESTful с моего ноутбука к elasticsearch на протяжении всей разработки. (я знаю, что могу установить elasticsearch локально, но это не проблема)

это означает, что из Ssh cli моего сервера Ubuntu, когда я делаю 'curl -X GET localhost:9200', он отлично отвечает, что работает elasticsearch. то есть

{
"name" : "T1Xfr06",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "NqdJol0ZQ6imGOZxIVvnNA",
"version" : {
"number" : "6.3.0",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "424e937",
"build_date" : "2018-06-11T23:38:03.357887Z",
"build_snapshot" : false,
"lucene_version" : "7.3.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

но я хочу сделать с моего ноутбука curl -X GET 'http://MY_Server's_PUblic_IP:9200' но он не отвечает.

вот что я пытался заставить его работать.

  1. В sudo nano /etc/elasticsearch/elasticsearch.yml я изменил network.host, например network.host: 0.0.0.0, а затем sudo systemctl restart elasticsearch, о котором везде говорилось, что он разрешает трафик со всех IP-адресов, но он все еще не отвечает на мои запросы на скручивание ноутбуков!
  2. я проверил и отключил все настройки брандмауэра ufw, мой sudo ufw status равен Status: inactive (это означает, что каждый IP-адрес разрешен для подключения, верно?)
  3. Просто чтобы убедиться, что мои curl -X GET 'http://MY_Server's_PUblic_IP:9200' законны. Я установил nginx на свой сервер UBUNTU, а затем сделал curl -X GET 'http://MY_Server's_PUblic_IP:80' со своего ноутбука. и сразу отвечает!

После всего этого, когда я делаю $ curl -X GET 'http://35.237.107.165:9200' со своего ноутбука, ответ curl: (7) Failed to connect to 35.237.107.165 port 9200: Timed out

Я новичок, и я знаю, что в elasticsearch есть много того, о чем я не знаю. что мне не хватает? почему я не могу получить доступ к elasticsearch, установленному на сервере более http, с моего локального компьютера? у меня вообще нет настроек брандмауэра.

Обновление: почему в моем файле yml нет параметра network.bind_host?

#---------------------------------- Cluster -----------------------------------
#Use a descriptive name for your cluster:
#
#cluster.name: my-application
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
#node.name: node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /var/lib/elasticsearch
#
# Path to log files:
#
path.logs: /var/log/elasticsearch
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:
#
http.port: 8080
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.zen.ping.unicast.hosts: ["35.237.107.165"]
#
# Prevent the "split brain" by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1):
#
#discovery.zen.minimum_master_nodes:
#
# For more information, consult the zen discovery module documentation.
#
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#
#gateway.recover_after_nodes: 3
#
# For more information, consult the gateway module documentation.
#
# ---------------------------------- Various -----------------------------------
# Require explicit names when deleting indices:
#action.destructive_requires_name: true

person TheDreamiumGuy    schedule 26.06.2018    source источник


Ответы (1)


Измените номер своего порта в файле elasticsearch.yml в строке «http.port:» (в файле elasticsearch.yml по умолчанию эти поля закомментированы, для раскомментирования нужно удалить «#»). затем перезапустите elasticsearch и попробуйте получить доступ к новому порту. лучше, если вы можете поделиться файлом elasticsearch.yml.

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

проверьте часть «Включить блокировку памяти» в следующем документе, чтобы включить блокировку памяти

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-production-elasticsearch-cluster-on-ubuntu-14-04

благодарю вас

person upuna    schedule 26.06.2018
comment
Эй, @upuna, спасибо за авзер. я изменил порт на 8800, 8080 и другие и сделал то, что было сказано в статье выше, и перезапустил elasticsearch, он все еще отвечает на curl localhost:8800, но когда curl 'http://MY_SERVER_IP:8800 все по-прежнему. curl: (7) Failed to connect to 35.231.57.211 port 8800: Timed out. что я делаю ? - person TheDreamiumGuy; 27.06.2018
comment
измените узел сетевой привязки следующим образом и посмотрите network.bind_host: 0.0.0.0 - person upuna; 27.06.2018
comment
брат, я обновил свой пост. Пожалуйста, взгляните на файл elasticsearch.yml. в нем нет параметра network.bind_host. я должен добавить его сам? - person TheDreamiumGuy; 29.06.2018
comment
Чтобы получить удаленный доступ к серверу es, вам необходимо установить «network.host» на IP-адрес вашего сервера, например network.host: 35.237.107.165. вы можете добавить network.bind_host самостоятельно. Извините за поздний ответ.. - person upuna; 01.07.2018