Zakładając, że mam 5 maszyn, na których chcę uruchomić klaster elastycznego wyszukiwania, i wszystkie są podłączone do dysku współdzielonego. Umieściłem jedną kopię elastycznego wyszukiwania na tym dysku współdzielonym, aby wszyscy trzej mogli ją zobaczyć. Czy po prostu uruchomię wyszukiwanie elastyczne na tym dysku współdzielonym na wszystkich moich komputerach, a grupowanie automatycznie zadziała? A może musiałbym skonfigurować określone ustawienia, aby elastyczne wyszukiwanie zdało sobie sprawę, że działa na 5 komputerach? Jeśli tak, jakie są odpowiednie ustawienia? Czy powinienem martwić się konfiguracją pod kątem replik, czy jest to obsługiwane automatycznie?
elasticsearch
Rolando
źródło
źródło
Odpowiedzi:
to bardzo łatwe.
Będziesz potrzebować każdej maszyny, aby mieć własną kopię ElasticSearch (po prostu skopiuj tę, którą masz teraz) - powodem jest to, że każda maszyna / węzeł zachowa swoje własne pliki, które są podzielone na fragmenty w klastrze.
Jedyną rzeczą, którą naprawdę musisz zrobić, jest edycja pliku konfiguracyjnego, aby zawierał nazwę klastra.
Jeśli wszystkie komputery mają tę samą nazwę klastra, elastsearch wykona resztę automatycznie (o ile wszystkie maszyny znajdują się w tej samej sieci)
Przeczytaj tutaj, aby zacząć: https://www.elastic.co/guide/en/elasticsearch/guide/current/deploy.html
Tworząc indeksy (gdzie trafiają dane) określasz w tym czasie ile replik chcesz (będą one rozprowadzane po klastrze)
źródło
Zwykle jest obsługiwany automatycznie.
Jeśli automatyczne wykrywanie nie działa. Edytuj plik konfiguracyjny wyszukiwania elastycznego, włączając wykrywanie emisji pojedynczej
Węzeł 1:
Węzeł 2:
i tak dalej dla węzła 3, 4, 5. Uczyń węzeł 1 głównym, a resztę tylko węzłami danych.
Edycja: Zwróć uwagę, że zgodnie z regułą ES, jeśli masz
N
węzły, to zgodnie z konwencjąN/2+1
węzły powinny być mistrzami mechanizmów przełączania awaryjnego. Mogą jednak być węzłami danych lub nie.Ponadto, jeśli automatyczne wykrywanie nie działa, najbardziej prawdopodobną przyczyną jest to, że sieć na to nie zezwala (a zatem jest wyłączona). Jeśli zbyt wiele pingów automatycznego wykrywania ma miejsce na wielu serwerach, zasoby do zarządzania tymi pingami uniemożliwi prawidłowe działanie innych usług.
Na przykład, pomyśl o klastrze 10 000 węzłów i wszystkich 10 000 węzłów wykonujących automatyczne pingi.
źródło
Wypróbowałem kroki, które @KannarKK zasugerował w ES 2.0.2, jednak nie mogłem uruchomić i uruchomić klastra. Najwyraźniej coś wymyśliłem, ponieważ ustawiłem numer portu TCP na Master, w konfiguracji Slave discovery.zen.ping.unicast.hosts potrzebuje numeru portu Master wraz z adresem IP (numer portu tcp) do wykrycia. Więc kiedy próbuję wykonać następującą konfigurację, działa to dla mnie.
Węzeł 1
Węzeł 2
źródło
Elastic Search 7 zmieniło konfiguracje inicjalizacji klastra. Należy zauważyć, że instancje ES komunikują się wewnętrznie za pomocą warstwy transportowej (TCP), a nie protokołu HTTP, który jest normalnie używany do wykonywania operacji na indeksach. Poniżej znajduje się przykładowa konfiguracja klastra 2 maszyn.
cluster.name: cluster-new node.name: node-1 node.master: true node.data: true bootstrap.memory_lock: true network.host: 0.0.0.0 http.port: 9200 transport.host: 102.123.322.211 transport.tcp.port: 9300 discovery.seed_hosts: [“102.123.322.211:9300”,"102.123.322.212:9300”] cluster.initial_master_nodes: - "node-1" - "node-2”
Konfiguracja maszyny 2: -
nazwa_klastra: będzie taka sama na wszystkich komputerach, które będą częścią klastra.
node.name: identyfikator instancji ES. Domyślnie nazwa maszyny, jeśli nie jest podana.
node.master: określa, czy ta instancja ES będzie nadrzędna, czy nie
node.data : określa, czy ta instancja ES będzie węzłem danych, czy nie (zatrzymaj dane)
bootsrap.memory_lock: wyłącz swapping. Możesz uruchomić klaster bez ustawiania tej flagi. Ale zaleca się ustawienie blokady.Więcej informacji: https://www.elastic.co/guide/en/elasticsearch/reference/master/setup-configuration-memory.html
network.host: 0.0.0.0, jeśli chcesz udostępnić instancję ES za pośrednictwem sieci. 0.0.0.0 różni się od 127.0.0.1 (aka localhost lub adres zwrotny). Oznacza to wszystkie adresy IPv4 na komputerze. Jeśli maszyna ma wiele adresów IP, a serwer nasłuchuje na 0.0.0.0, klient może połączyć się z maszyną z dowolnego adresu IPv4.
http.port: port, na którym ta instancja ES będzie nasłuchiwać żądań HTTP
transport.host: adres IPv4 hosta (będzie używany do komunikacji z innymi instancjami ES działającymi na różnych komputerach). Więcej informacji: https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-transport.html
transport.tcp.port: 9300 (port, na którym maszyna będzie akceptować połączenia tcp)
discovery.seed_hosts: To zostało zmienione w ostatnich wersjach. Zainicjuj wszystkie adresy IPv4 z portem TCP (ważne) instancji ES, które będą częścią tego klastra. Będzie to takie samo we wszystkich instancjach ES, które są częścią tego klastra.
cluster.initial_master_nodes: nazwy węzłów (node.name) maszyn ES, które wezmą udział w wyborach głównych. (podejmowanie decyzji w oparciu o kworum: - https://www.elastic.co/guide/en/elasticsearch/reference/current /modules-discovery-quorums.html#modules-discovery-quorums )
źródło