2016-04-04 15 views
5

Ho impostato Ricerca elastica 2.3.0 come servizio in una macchina virtuale di Azure con Windows Server 2012 R2. Posso accedere all'istanza di ricerca elastica dal server utilizzandoIstanza ElasticSearch non raggiungibile dall'esterno del server - Azure Windows 2012

http://localhost:9200 

ma non riesco ad accedere dall'esterno del server.

Cosa ho provato?

  • Solo per il test, ho reso disponibile la VM all'esterno della rete virtuale.
  • aperto la porta 9200 in impostazioni di Windows Firewall come una regola del traffico in entrata
  • aggiunta un endpoint in impostazioni del portale Azure aprendo la porta 9200

provato con VM classico pure.

Anche per verificare se la VM è a posto, ho impostato IIS in quella macchina, ho aperto la porta 80. La pagina IIS predefinita è accessibile dall'esterno.

L'unica cosa che non ho provato è l'impostazione di ES in una macchina virtuale Linux.

Non riesco a trovare nulla nei registri di elasticsearch. Nel browser (Chrome), non ci sono registri nella rete. Ruota semplicemente, aspetta il server e scatta con "ERR_EMPTY_RESPONSE".

Qualcuno che abbia fatto questo fa luce per favore?

UPDATE: Ecco quello che posso vedere in netstat:

TCP 127.0.0.1:9200   machine-name:0  LISTENING 
TCP 127.0.0.1:9300   machine-name:0  LISTENING 
+0

In qualche altra istanza, il nostro team utilizza ES1.7.0, che funziona perfettamente. Perplesso. – droidbot

risposta

14

A partire da ES 2.0, la procedura elasticsearch unica binds to localhost, che spiega il motivo per cui è possibile interrogare ES dall'interno, ma non dall'esterno.

È necessario modificare la seguente impostazione nel file di configurazione elasticsearch.yml:

network.host: 0.0.0.0 
+0

Ricorda di provare anche questo @Val. Aggiunto 'network.host: A.B.C.D', riavviato il servizio. Ancora senza fortuna. E non è raggiungibile con localhost. Ho anche provato 'network.host: [" A.B.C.D "," 127.0.0.1 "," [:: 1] "]'. Niente affatto. – droidbot

+0

In questo caso, le voci vengono perse da netstat per le porte 9200 e 9300. – droidbot

+0

È necessario utilizzare un indirizzo IP reale, 'ABCD' è solo un esempio, ma deve essere qualcosa del tipo: 123.123.123.123 – Val

1

vorrei suggerire di impostare il network.host di valori speciali

ad es.

network.host: [_local_, _site_] 

Questo funziona per me.

+0

Posso essere un noob ElasticSearch @Amey, mi dispiace. Puoi spiegarlo un po 'oltre, per favore. Ad esempio, cosa intendi per "valori speciali"? – droidbot

+1

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html. Questo è il link di riferimento per questo. _local_ Qualsiasi indirizzo di loopback sul sistema, ad esempio 127.0.0.1. _site_ Qualsiasi indirizzo locale del sito sul sistema, ad esempio 192.168.0.1 –

Problemi correlati