2015-12-19 5 views
5

Ho cercato di utilizzare il delizioso progetto ansible-elasticsearch per configurare un cluster Elasticsearch a nove nodi.La configurazione del cluster Elasticsearch non sta rilevando nodi sotto unicast e multicast

Ogni nodo è attivo e in esecuzione ... ma non si comunicano tra loro. I nodi principali pensano che ci siano zero nodi di dati. I nodi dati non si connettono ai nodi master.

Hanno tutti lo stesso cluster.name. Ho provato con multicast abilitato (discovery.zen.ping.multicast.enabled: true) e disabilitato (impostazione precedente su false e discovery.zen.ping.unicast.hosts:["host1","host2",..."host9"]) ma in entrambi i casi i nodi non comunicano.

Essi hanno la connettività di rete tra di loro - verificato via telnet sulla porta 9300.

Esempio di output: $ curl host1:9200/_cluster/health {"error":{"root_cause":[{"type":"master_not_discovered_exception","reason":"waited for [30s]"}],"type":"master_not_discovered_exception","reason":"waited for [30s]"},"status":503}

Non riesco a pensare a nessun altre ragioni per cui non si collegherebbero - alla ricerca di più idee su cosa provare.

Modifica: ho finalmente risolto questo problema. Le impostazioni che funzionavano erano publish_host a "_non_loopback:ipv4_" e unicast con discovery.zen.ping.unicast.hosts impostato su ["host1:9300","host2:9300","host3:9300"] - elencando solo i nodi master dedicati. Ho un conteggio minimo nodo master di 2.

risposta

6

Gli unici motivi che posso pensare che possono causare tale comportamento sono:

  1. problemi di connettività - Ping non è un buon strumento per controllare che i nodi possono connettersi a l'un l'altro. Utilizzare telnet e provare a collegare da host1 a host2 sulla porta 9300.

  2. tuo elasticsearch.yml è impostato per legare 127.0.0.1 o l'host sbagliato (se non siete sicuri, legarsi 0.0.0.0 per vedere se questo risolve i problemi di connettività e quindi è importante cambiarlo per legare solo gli host interni per evitare l'esposizione di elasticsearch direttamente a Internet).

  3. Il tuo publish_host non è corretto - Questo di solito accade quando si esegue ES all'interno di un contenitore di finestra mobile, ad esempio, è necessario assicurarsi che publish_host sia impostato su un indirizzo a cui è possibile accedere tramite altri host.

+0

Grazie per avermi ricordato che il ping non è sufficiente - il telnet può anche collegare oltre 9300 tuttavia. Tutti gli host sono vincolati a '0.0.0.0' e' publish_host' non è impostato. – Dave

+0

L'host di pubblicazione potrebbe essere sbagliato, puoi impostarlo per quello corretto? Questo dovrebbe essere un indirizzo IP accessibile e visibile agli altri computer nel cluster. –

+0

@Dave Vedo che hai accettato la mia risposta, era il 'publish_host'? –