co to jest kworum w klastrze rozrusznika serca (Understanding Quorum Operations)

czym jest kworum?

aby klaster działał zgodnie z oczekiwaniami, węzły muszą być zgodne co do pewnych faktów, takich jak to, które maszyny są obecnie członkami klastra, gdzie działają usługi i które Maszyny używają jakich zasobów.

metoda, w której jest to zaimplementowane w dodatku Red Hat High Availability add-on, polega na wykorzystaniu systemu głosowania większościowego. Każdy węzeł klastra oddaje jeden głos, Jeśli pomyślnie dołączy do komunikacji sieciowej corosync i będzie w stanie komunikować się z innymi węzłami, które już uczestniczą w klastrze.

klaster działa, jeśli więcej niż połowa wszystkich możliwych głosów zostanie pomyślnie oddanych. Minimalna liczba głosów potrzebna do osiągnięcia ponad połowy głosów nazywana jest kworum. Jeśli quorum zostanie osiągnięte, klaster jest uważany za quorat. Klaster traci kworum, jeśli połowa węzłów lub więcej nie może się ze sobą komunikować.

po uruchomieniu klastra wszystkie węzły klastra starają się komunikować ze sobą i dążą do osiągnięcia kworum. Gdy tylko powstaje większość, powstaje Gromada kworanów. Wszystkie inne węzły, które nie dołączyły pomyślnie do klastra quorate, zostają ogrodzone przez węzeł, który ma kworum. Jeśli węzeł będący częścią klastra quorate nie jest już w stanie komunikować się z klastrem, węzeł zostaje ogrodzony.

dlaczego wymagane jest obliczanie kworum?

kworum jest wymagane w sytuacjach, gdy niektóre węzły w klastrze nie mogą komunikować się z niektórymi innymi węzłami. Poniższa ilustracja przedstawia pięciowęzłowy klaster składający się z węzłów A, B, c, D i E z usługą używającą systemu plików ext4 na współdzielonej pamięci masowej. Ta usługa jest obecnie uruchomiona na węźle A.

węzły D i Eget oddzieliły się od głównej sieci prywatnej i nie mogą komunikować się z węzłami A, B i c. bez kworum te dwa węzły zdecydują, że A, B i C zawiodły i muszą zostać ogrodzone (zdalnie wyłączone), aby ich zasoby mogły zostać odzyskane. W ten sposób quorum pełni rolę ważnej bramy przed ogrodzeniem.

gdyby klaster był bez urządzenia ogrodzeniowego, węzły D i E natychmiast zaczęłyby odzyskiwać zasoby, w wyniku czego ten sam system plików ext4 byłby montowany w dwóch miejscach naraz, co nie jest zdrową sytuacją. Ta sytuacja, w której dwie połówki klastra działają niezależnie od siebie, jest określana jako split-brain.

podział mózgu jest szczególnym problemem w klastrach dwu-węzłowych, ponieważ jeśli jeden węzeł zawiedzie, drugi węzeł nie składa się z większości węzłów w klastrze. Należy podjąć specjalne kroki, aby umożliwić działanie klastra z dwoma węzłami i nadal unikać podziału mózgu.”

zakładając, że wszystkie węzły w tym przykładzie mają jeden głos, sytuacja ta nie może powstać, ponieważ węzeł D i węzeł E mają tylko dwa głosy razem, co stanowi nie więcej niż połowę wszystkich głosów (pięć). Spowoduje to, że węzeł D i węzeł E przestaną funkcjonować, dopóki nie zostanie dodany co najmniej jeden inny głos. Z drugiej strony węzły A, B i c pozostają aktywne, ponieważ mają łącznie trzy głosy, co stanowi ponad połowę wszystkich głosów.

Obliczanie kworum

kworum jest obliczane i zarządzane w dodatku Red Hat High Availability Add-on przez komponent corosync votequorum. Komponent votequorum używa dwóch wartości do obliczenia, czy klaster jest ilorazem:

  1. oczekiwane głosy: oczekiwana liczba głosów, jeśli wszystkie węzły klastra są w pełni sprawne i komunikują się ze sobą.
  2. Łączna liczba głosów: liczba głosów aktualnie obecnych. Może to być niższa niż liczba oczekiwanych głosów, jeśli niektóre węzły nie są w górę lub nie komunikują się z klastrem.

liczba głosów wymagana do osiągnięcia kworum jest oparta na oczekiwanych głosach. Poniższy wzór pokazuje, ile głosów jest wymaganych do kworum. W tym obliczeniu floor() oznacza zawsze Zaokrąglanie w dół.

Quorum = floor(expected votes + 2 + 1)

przykład obliczenia Kworum

w poniższym przykładzie zakłada się klaster z trzema węzłami. Gromada trójmiejska ma spodziewaną liczbę głosów wynoszącą trzy.

Quorum= floor(expected votes + 2 + 1)Quorum = floor(3 + 2 + 1) Quorum = floor(1.5 + 1) Quorum = floor(2.5) Quorum = 2 

w klastrze trzech węzłów, aby osiągnąć kworum, muszą być uruchomione co najmniej dwa węzły.

w poniższym przykładzie zakłada się klaster z czterema węzłami. Gromada czteroprzęsłowa ma spodziewaną liczbę głosów wynoszącą cztery.

Quorum = floor(expected votes + 2 + 1} Quorum = floor(4 + 2 + 1) Quorum = floor(2 + 1} Quorum = floor(3) Quorum = 3

w klastrze czterech węzłów, aby osiągnąć kworum, muszą być uruchomione co najmniej trzy węzły.

Wyświetlanie stanu kworum

dodatek Red Hat High Availability zapewnia kompleksowe narzędzie do wyświetlania aktualnego stanu kworum w klastrze: corosync-quorumtool. Narzędzie corosync-quorumtool zapewnia przegląd informacji związanych z Kworum, takich jak liczba głosów i oczekiwane głosy, i pokazuje, czy klaster jest kworowany na pierwszy rzut oka.

  1. wpis Nodes zawiera liczbę węzłów należących do klastra.
  2. wpis ID węzła pokazuje ID węzła, na którym wykonano corosync-quorumtool.
  3. wpis Quorate pokazuje, czy klaster jest quorate.
  4. wpis oczekiwane głosy pokazuje liczbę głosów, które są obecne, jeśli wszyscy skonfigurowani członkowie klastra są aktywni w klastrze.
  5. najwyższy oczekiwany wpis pokazuje największą liczbę oczekiwanych głosów widzianych w klastrze.
  6. wpis Total votes pokazuje ilość głosów aktualnie obecnych w klastrze.
  7. wpis Quorum pokazuje, ile głosów musi być obecnych co najmniej, aby Gromada pozostała kworum.
  8. wpis Flags pokazuje wszystkie właściwości związane z Kworum, które są obecnie ustawione w klastrze. Jeśli klaster jest quorate, to właściwość Quorate zostanie pokazana. Dodatkowe Funkcje specjalne będą również wyświetlane w tym polu Po ustawieniu, takie jak LastManstanding lub WaitForAll.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.