2013-05-08 13 views
26

Zainstalowałem elastyczne wyszukiwanie na moim komputerze lokalnym, chcę skonfigurować go jako jedyny pojedynczy węzeł w klastrze (serwer autonomiczny). Oznacza to, że gdy tylko utworzę nowy indeks, będzie on dostępny tylko dla mojego serwera. Nie będzie dostępny dla serwera innego użytkownika.Konfiguracja pojedynczego węzła dla pojedynczego klastra (samodzielny klaster) ElasticSearch

Mój obecny scenariusz te indeksy są dostępne dla innych serwerów (serwery są tworzone w klastrze) i mogą wprowadzać dowolne zmiany w moich indeksach. Ale ja tego nie chcę.

Przeszedłem przez inne blogi, ale nie otrzymałem najlepszego rozwiązania. Czy możesz mi powiedzieć, jakie są kroki dla tego samego?

+2

Alternatywnie możesz zmienić nazwę klastra swojego serwera. – bhdrkn

Odpowiedz

55

Mam odpowiedź od http://elasticsearch-users.115913.n3.nabble.com/How-to-isolate-elastic-search-node-from-other-nodes-td3977389.html.

Kimchy: Ustawiono węzeł na local (true), co oznacza, że ​​nie wykryje innych węzłów za pomocą sieci, tylko w obrębie tej samej maszyny JVM.

w pliku elasticsearch/bin/elasticsearch.yml

node.local: true # disable network 
+9

Czy jest to udokumentowane w dowolnym miejscu oficjalnego numeru referencyjnego? – tuespetre

+4

to nie jest udokumentowane, podobnie jak połowa elastycznych "funkcji" –

+1

'node.local' jest przestarzałe. Zobacz odpowiedź @ felix-borzik poniżej. – jevonearth

14

Jeśli używasz transport sieciowy w kodzie, to nie będzie działać, jak node.local daje tylko LocalTransport:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-transport.html#_local_transport

Sztuką jest więc, aby ustawić

discovery.zen.ping.multicast: false

w twoim elasticsearch.yml, który zatrzyma twój węzeł szukający innych węzłów.

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-discovery-zen.html#multicast

Nie jestem pewien, czy to uniemożliwia inne węzły z odkrywają swoje mimo; Potrzebowałem tego tylko do wpływu na grupę węzłów z tymi samymi ustawieniami w tej samej sieci.

+0

Nie działa na ElasticSearch 5. – iceberg

+0

Zobacz [odpowiedź] (https://stackoverflow.com/a/45263329/368683) dla ElasticSearch 5.0 i nowszych. – user368683

19

W elasticsearch.yml

# Note, that for development on a local machine, with small indices, it usually 
# makes sense to "disable" the distributed features: 
# 
index.number_of_shards: 1 
index.number_of_replicas: 0 

Użyj tej samej konfiguracji w kodzie.

także wyizolować użycia węzła node.local: true lub discovery.zen.ping.multicast: false

+4

Nie działa na ElasticSearch 5. – Raptor

+0

Zobacz [odpowiedź] (https://stackoverflow.com/a/45263329/368683) dla ElasticSearch 5.0 i nowszych. – user368683

0

Wszystkie te didn't mi pomóc (i niestety didn't odczytać odpowiedź bhdrkn). Rzecz, która zadziałała dla mnie, polegała na zmianie nazwy klastra programu elasticsearch za każdym razem, gdy potrzebuję mieć oddzielną instancję, w której nowe węzły nie są automatycznie dodawane za pomocą multiemisji.

Po prostu zmień nazwę cluster.name: {{elasticsearch.clustername}} w elasticsearch.yml, np. via Ansible. Jest to szczególnie przydatne przy tworzeniu oddzielnych etapów, takich jak Dev, QA i Production (co jest standardowym zastosowaniem w środowiskach korporacyjnych).

A jeśli re korzystają logstash aby uzyskać dane do elasticsearch, Nie zapomnij umieścić taką samą nazwę klastra w wyjściowym poprzecznym, jak:

output { 
    elasticsearch { 
     cluster => "{{ elasticsearch.clustername }}" 
    } 
} 

przeciwnym razie „logstash- * "-index nie zostanie poprawnie zbudowany ...

6

Oto istotne informacje dla ElasticSearch 5:

Według changelog, aby włączyć tryb lokalnego na ES 5 trzeba dodać do swojej elasticsearch.ymltransport.type: local zamiast node.local: true.

+0

To musi być przegłosowane. – jevonearth

+1

Ta odpowiedź zadziałała. Pamiętaj, że niektóre ze starszych odpowiedzi mogą być nieaktualne. Oto działający link do wyżej wymienionego [changelog] (https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_settings_changes.html#_node_settings) – user368683

Powiązane problemy