Próbuję wymyślić sposoby na skalowanie naszej konfiguracji elasticsearch. Czy ludzie używają wielu klientów węzła w klastrze Elasticsearch i umieszczają je przed równoważnikiem obciążenia/odwrotnym proxy, takim jak Nginx. Inne pomysły byłyby świetne.Używanie klientów z wieloma węzłami w elasticsearch
Odpowiedz
Więc zacznę z re-capping trzy różne rodzaje węzłów można skonfigurować w Elasticsearch:
danych Node - node.data ustawiony na true i node.master ustawiona na false - to są twoje główne węzły klastra elastycznego wyszukiwania, w którym przechowywane są dane.
Dedykowany węzeł główny - węzeł.data ma wartość false, a węzeł.master jest ustawiony na wartość true - są one odpowiedzialne za zarządzanie stanem klastra.
Client Node - node.data jest ustawiona na false i node.master jest ustawiony na
fałszywe - to odpowiadać na żądania danych klienta, zapytań do wyników
z węzłów danych i gromadzenie danych aby wrócić do klient.
Dzieląc funkcje na 3 różne typy węzłów bazowych, masz duży stopień szczegółowości i kontroli w zarządzaniu skalą klastra. Ponieważ każdy typ węzła obsługuje bardziej izolowany zestaw obowiązków, lepiej jest dostroić każdy i odpowiednio skalować.
Dla węzłów danych jest to funkcja obsługi indeksowania i odpowiedzi na zapytania, a także upewniania się, że do każdego węzła przydzielono wystarczającą ilość pamięci. Będziesz chciał monitorować wykorzystanie pamięci masowej i przepustowości dysku dla każdego węzła, wraz z wykorzystaniem procesora i pamięci. Chcesz uniknąć konfiguracji, w których skończy Ci się dysk, lub nasycić dysk thru-put, mając wciąż nadmiar cpu i pamięci, lub odwrotnie, gdzie pamięć i procesor max, ale masz dużo dostępnego dysku. Najlepszym sposobem, aby to ustalić, jest benchmarking typowych działań indeksujących i zapytań.
Dla węzłów głównych zawsze powinieneś mieć co najmniej 3 i zawsze mieć nieparzystą liczbę. Kworum powinno być ustawione na N/2 + 1, gdzie N jest liczbą głównych węzłów. W ten sposób nie dochodzi do problemów z dzielonym mózgiem w klastrze. Dedykowane węzły główne zwykle nie są obciążone, więc mogą być dość małe.
Dla węzłów klientów można je umieścić za równoważnikiem obciążenia lub użyć pozycji dns, aby wskazać im. Są one łatwo skalowane w górę iw dół, po prostu dodając więcej do klastra i powinny być dodane zarówno dla redundancji, jak i podczas wspinaczki na procesor i pamięć. Nie potrzeba dużo dysku.
Niezależnie od konfiguracji, oprócz analizy porównawczej prawdopodobnych obciążeń z wyprzedzeniem zdecydowanie zalecałbym ścisłe monitorowanie procesora, pamięci i dysku - ES jest łatwe do uruchomienia, ale wymaga obserwacji podczas skalowania w większe liczby transakcji i więcej węzłów. Radzenie sobie z żółtym lub czerwonym klastrem stanu z powodu awarii węzła z pamięci lub wyczerpania dysku nie jest zabawne.
będę uważnie czytać tego artykułu z jakiegoś tła:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-node.html
Plus to seria artykułów:
http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/distributed-cluster.html
Wygląda jak domena 'elasticsearch.org' jest niedostępna (ale mógłbym uzyskać dostęp do twoich linków przez podstawienie przez' elastic.co'). –
Przy V5 elastycznego stosu, węzły uległy zmianie, w związku z czym mamy teraz Ingest Node. Ponadto węzeł plemienia zastąpił węzeł klienta. –
można udostępnić niektóre informacje o aktualnej architektury ? Pomysły na skalowanie będą w dużym stopniu zależeć od tego, w jaki sposób skonfigurowane są obecnie rzeczy. –
@JohnPetrone Mamy obecnie naprawdę prostą konfigurację, która ma 20 węzłów danych. Patrząc na różne topologie, które pomogą nam skalować. –