2015-12-24 3 views
8

ContextElasticsearch auf dem Server installiert, aber kann es nicht an, wenn von einer anderen Maschine

Haben gerade erst begonnen elastic search verwenden, es auf dem Server installiert ist, kann curl und telnet zu port 9200 auf local machine(server) aber kann es nicht an, wenn aus eine andere Maschine.

Ich deaktivierte Firewall auf dem Server und dem Client als Lösungen, die ich vom Internet bekam, schlug vor und versuchte auch Vorschläge, die auf dem Verbindung unten gefunden wurden, aber konnte es nicht arbeiten lassen.

https://discuss.elastic.co/t/accessing-port-9200-remotely/21840

Frage

Kann jemand mir helfen, wie diese Funktion zu erhalten, danke im voraus

Antwort

13

Da Sie nur Elasticsearch installiert, ich nehme an, Sie verwenden ES 2.0 oder 2.1. Sie müssen wissen, dass seit der Version 2.0, Elasticsearch binds to localhost by default (als Sicherheitsmaßnahme zu verhindern, dass Ihr Knoten mit anderen Knoten im Netzwerk verbinden, ohne dass Sie es wissen).

Also, was Sie tun müssen, ist einfach Ihre elasticsearch.yml Konfigurationsdatei zu bearbeiten und ändern Sie die network.bind_host Einstellung wie folgt aus:

network.bind_host: 0 

Dann müssen Sie Ihren Knoten neu zu starten, und es wird von einem entfernten Rechner zugänglich sein .

+0

@scott_lotus seine Werke, auch jemand, der jemals diese Lösung benötigt sollte nicht vergessen, um die # aus elasticsearch.yml zu entfernen (die Konfiguration, die geändert wird, zu kommentieren), zB "# network.host: xxx.xx.xx.xxx" nach "network.host: xxx.xx.xx.xxx" –

5

Lassen Sie uns Ihr Szenario neu erstellen. Ich habe frisch installiertes elasticsearch auf meiner Maschine gestartet. Jetzt bin ich in der Lage curl auf Port 9200

[[email protected] ~]# hostname -i 
192.168.109.128 

[[email protected] ~]# curl http://localhost:9200 

{ 
    "status" : 200, 
    "name" : "Kali Node", 
    "cluster_name" : "kali", 
    "version" : { 
    "number" : "1.7.1", 
    "build_hash" : "b88f43fc40b0bcd7f173a1f9ee2e97816de80b19", 
    "build_timestamp" : "2015-07-29T09:54:16Z", 
    "build_snapshot" : false, 
    "lucene_version" : "4.10.4" 
    }, 
    "tagline" : "You Know, for Search" 
} 

auszuführen Wenn Sie die Wiedergabemodi, die TCP-Ports auf dem Server überprüfen, die Java-Dienst geöffnet hat.

[[email protected] ~]# netstat -ntlp | awk '/[j]ava/' 
tcp6  0  0 127.0.0.1:9200   :::*     LISTEN  3422/java 

tcp6  0  0 127.0.0.1:9300   :::*     LISTEN  3422/java 

Sie können sehen, Elasticsearch auf 127.0.0.1 hören so ist es offensichtlich, dass Sie nicht Port 9200 aus dem Netzwerk zugreifen können. Lassen Sie es mit wget vom Remote-Server überprüfen.

$ wget.exe 192.168.109.128:9200 

--2015-12-25 13:30:18-- http://192.168.109.128:9200/ 
Connecting to 192.168.109.128:9200... failed: Connection refused. 

läßt die Elasticsearch Konfiguration ändert das Problem mit folgendem Befehl

[[email protected] ~]# sed -i '/^network.bind_host:/s/network.bind_host: .*/network.bind_host: 0.0.0.0/' /etc/elasticsearch/elasticsearch.yml 

oder

nur offen Elasticsearch Konfigurationsdatei und findet „network.bind_host“ und tut folgende Änderungen unten zu beheben

network.bind_host: 0.0.0.0 

dann starten Sie Ihren elastischenSuchservice neu

[[email protected] ~]# service elasticsearch restart 
Restarting elasticsearch (via systemctl):     [ OK ] 

Now lets check the listening tcp port of java 

[[email protected] ~]# netstat -ntlp | awk '/[j]ava/' 

tcp6  0  0 :::9200     :::*     LISTEN  3759/java 

tcp6  0  0 :::9300     :::*     LISTEN  3759/java 

Jetzt können Sie es auf allen Schnittstellen hören.

Ermöglicht dem wget Befehl aus Remote-Computer versuchen

$ wget.exe 192.168.109.128:9200 

--2015-12-25 13:39:12-- http://192.168.109.128:9200/ 
Connecting to 192.168.109.128:9200... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 328 [application/json] 
Saving to: ‘index.html.1’ 

index.html.1     100%[====================================================>]  328 --.-KB/s in 0.009s 

2015-12-25 13:39:12 (37.1 KB/s) - ‘index.html.1’ saved [328/328] 

Try curl command 

$ curl.exe http://192.168.109.128:9200 

{ 
    "status" : 200, 
    "name" : "Kali Node", 
    "cluster_name" : "kali", 
    "version" : { 
    "number" : "1.7.1", 
    "build_hash" : "b88f43fc40b0bcd7f173a1f9ee2e97816de80b19", 
    "build_timestamp" : "2015-07-29T09:54:16Z", 
    "build_snapshot" : false, 
    "lucene_version" : "4.10.4" 
    }, 
    "tagline" : "You Know, for Search" 
} 
+0

ist es gewesen gelöst –

+0

Som Manchmal müssen wir die SSH-Verbindung nach dem Bearbeiten der Konfig neu starten (z. B. PuTTY) –

+0

Danke für die gründliche Erklärung des Problems, +1 –

1

Für Elasticsearch Version 5 können Sie die Konfigurationsdatei /etc/elasticsearch/elasticsearch.yml und fügen Sie die folgenden Zeilen

network.bind_host: 0 
http.cors.allow-origin: "*" 
http.cors.enabled: true 

Cors für Plugins benötigt bearbeiten wie Head oder HQ auf dem Remote-Computer, da sie Ajax XMLHttpRequest-Anforderungen erstellen

Sie können auchdefinieren, da es ist eine Abkürzung, die die bind_host und die publish_host

Quellen setzt:

Verwandte Themen