Redis Sentinel

Redis Sentinel

Załóżmy scenariusz, w którym masz tylko jedną instancję Redis w swojej produkcji i w pewnym momencie zawodzi, z jakiegoś powodu. Twoja aplikacja buforuje dane w sklepie danych Redis, a teraz jedyne źródło danych jest martwe. Jednym ze sposobów kontrolowania tego rodzaju scenariuszy jest utrzymanie architektury mistrza-niewolnicy, w której niewolnicy mogą odtworzyć węzeł główny, dopóki nie wróci. Klastry Redis wspierają wysoką dostępność do pewnego stopnia w stosunku do podejścia Master-Replica. Redis Sentinel to kolejne podejście, które stanowi bardziej niezawodny sposób na utrzymanie wysokiej dostępności instancji Redis. Monitoruje węzeł główny Redis pod kątem awarii i natychmiast uruchamia proces awaryjnego, który będzie promować istniejący węzeł niewolnika z nowym mistrzem.

Ponadto Redis Sentinel działa jako średni człowiek, w którym klienci łączą się i proszą o najnowszy adres IP węzła głównego. Tak więc podłączony wartość podaje adres węzła głównego.

Ponadto awaria węzła głównego jest potwierdzona, jeśli wielu wartowników zgodziło się, że dany Master nie jest dostępny lub dostępny. To kończy fazę wykrywania awarii, a proces awaryjnego rozpoczyna się od razu. Stąd Sentinel Redis może być postrzegany jako system rozproszony o określonych właściwościach.

Umowa Sentinels opiera się na wartości kworum, która zostanie omówiona w następnym rozdziale.

Wartość kworum

Wartość kworum to maksymalna liczba wartowników, które należy uzgodnić, kiedy węzeł główny jest w dół. Ta wartość jest używana tylko do identyfikacji awarii w węźle głównym. Proces awaryjnego rozpoczyna się od autoryzacji wielu dostępnych węzłów Sentinel w celu kontynuowania wybranego wartownika jako lidera.

Funkcje Redis Sentinel

Sentinel jest znany z dostarczenia mechanizmu wysokiej dostępności dla sklepu danych Redis. Poza tym można wymienić kilka innych możliwości.

  • Sentinel nieustannie monitoruje status węzłów mistrzów i niewolników w systemie Redis.
  • Ilekroć jest awaria lub coś złego w twoich instancjach Redis, Sentinel jest w stanie powiadomić administratora lub podłączone aplikacje za pomocą Sentinel API.
  • Faza przełączania awaryjnego jest kierowana przez Sentinel, promując replikę jako nowy Mistrz. Pozostałe repliki skonfigurowane do korzystania z nowego Master. Wreszcie, odpowiednie klienci otrzymają powiadomienie o nowym adresie węzła głównego.
  • Ponadto Redis Sentinel jest dostawcą konfiguracji dla podłączonych klientów, w których klienci mogą poprosić o adres obecnie dostępnej instancji głównej, a jeśli nastąpi nagle zawalenie się, Sentinel jest zaangażowany w natychmiastowe naciskanie nowego adresu węzła głównego.

W następnej sekcji będziemy konfigurować Redis Sentinels z instancjami Master-Replica i korzystać z API Sentinel do monitorowania węzłów.

Konfiguracja Sentinel

Najpierw tworzymy dwie instancje Redis w portach 7000 i 7001. Port 7000 będzie głównym węzłem, a drugi powtarza mistrza. Oba instancje używają odpowiednio następujących plików konfiguracyjnych:

Konfiguracja węzła głównego

Port 7000
nr z obsługi klastra
Węzły pliku klastra-konfig.conf
Klaster-Node Timeout 5000
Dodatek tak

Konfiguracja węzłów niewolników

Port 7001
nr z obsługi klastra
Węzły pliku klastra-konfig.conf
Klaster-Node Timeout 5000
Dodatek tak

Oba instancje rozpoczną się od dostarczenia pliku konfiguracyjnego powiązanego z każdym. Możemy użyć następującego polecenia, aby osobno rozpocząć instancje Redis:

Redis-server Redis.conf

Połączmy się z instancją Redis, rozpoczęty w porcie 7001 w następujący sposób:

Redis -Cli -p 7001

Teraz możemy uczynić tę instancję replika mistrza, który działa w porcie 7000. Polecenie repliki można użyć w następujący sposób:

Replika 127.0.0.1 7000

Zgodnie z oczekiwaniami, instancja działająca w porcie 7001 stała się replikowym węzłem mistrza działającego w porcie 7000.

Teraz jesteśmy gotowi skonfigurować trzy Sentinels Redis do monitorowania powyższej instancji głównej. Musimy mieć trzy pliki konfiguracyjne, aby utworzyć trzy instancje Sentinel w portach 5000, 5001 i 5002, jak pokazano następujące.

Każdy posterunek.conf Plik wygląda na następujące, z wyjątkiem tego, że numer portu zostanie zmieniony:

Port 5000
Sentinel Monitor Masternode 127.0.0.1 7000 2
Sentinel Down-After-Milliiseconds Masternode 5000
Sentinel Failover Timeout Masternode 60000

Teraz nadszedł czas, aby uruchomić trzy wartowniki. Możesz użyć wykonywalny Redis-Sentinel wraz z ścieżką do posterunek.conf plik konfiguracyjny do utworzenia instancji Sentinel. W przeciwnym razie nadal możemy wywołać wykonywalne Redis-Server, określając ścieżkę do posterunek.conf i flaga -posterunek.

Zacznijmy każdego wartownika za pomocą następującego polecenia:

Redis-Server Sentinel.Conf - -Sentinel

Pierwszy wartownik został uruchomiony w porcie 5000. Podobnie możesz również rozpocząć dwie pozostałe instancje.

Teraz nasza konfiguracja Redis Sentinel jest uruchomiona, jak pokazano na następującej ilustracji:

W poniższej sekcji będziemy zbadać więcej na temat interfejsu API Sentinel i tego, jak możemy go wykorzystać do pobierania informacji związanych z węzłem głównym Redis.

Sentinel API

Redis zapewnia osobny interfejs API Sentinel do monitorowania powiązanych mistrzów i replików, subskrybowania powiadomień i modyfikowania ustawień Sentinel. Ponadto kilka zastosowań jest wymienionych w następujących.

  • Sprawdź status monitorowanych instancji Redis Master i Slave
  • Szczegóły dotyczące innych wartowników
  • Otrzymuj powiadomienia w stylu push od Sentinels w przypadku przełączania awaryjnego

Polecenie Sentinel może być używane z powiązanymi podkommanami do zapytania, aktualizacji lub ustawiania Sentinels Redis i monitorowanych węzłów.

Sprawdź status węzła głównego

Bardzo ważne jest od czasu do czasu monitorowanie lub sprawdzanie zdrowia węzłów głównych. Do pobrania głównych szczegółów można użyć następującego polecenia API Sentinel:

Sentinel Master

Monitored_master_name: Nazwa węzła głównego określona w pliku konfiguracyjnym Sentinel, który utworzyliśmy we wcześniejszym etapie.

Użyjmy tego polecenia, aby zapytać o status główny w naszej konfiguracji. W naszym przypadku nazwa węzła głównego to „Masternode”.

Sentinel Masternode

Odzyskano kilka informacji, a kilka z nich jest ważnych, takich jak niewolniki, flagi i inni.

flagi właściwość jest ustawiona na gospodarz co oznacza, że ​​mistrz jest w dobrym zdrowiu. Za każdym razem, gdy węzeł główny jest opuszczony, s_down Lub o_down flaga zostanie wyświetlona. Własność Num-in-in-sentinels jest ustawiony na 2, co oznacza, że ​​Sentinel Redis już rozpoznał pozostałe dwa wartowniki dla węzła głównego. Ponadto Num-SLAVES Właściwość wyświetla dostępne repliki dla węzła głównego. W takim przypadku jest ustawiony na 1, ponieważ mamy tylko jedną replikę.

Uzyskaj informacje o powiązanych replikach

Możemy sprawdzić repliki połączone z węzłem głównym za pomocą następujące polecenie Sentinel Sub:

Repliki Sentinel

W tym przykładzie nazwa główna to „Masternode”.

Sentinel Replicas Masternode

Zgodnie z oczekiwaniami, wartownik wykrył węzeł niewolniczy działający w porcie 7001.

Uzyskaj informacje o powiązanych strażnikach

Podobnie możemy zapytać o szczegóły związane z innymi wartownikami powiązanymi z bieżącym węzłem głównym za pomocą następującego podkomenda Sentinel:

Sentinel Sentinels

W takim przypadku będziemy pobierać informacje związane z węzłem głównym o nazwie „Masternode”.

Sentinel Sentinels Masternode

Uzyskaj adres węzła głównego

Jak wspomniano we wcześniejszej sekcji, Redis Sentinel jest dostawcą konfiguracji dla podłączonych klientów. Jest więc w stanie dostarczyć aktualnie działający adres IP węzła głównego i port do żądanych klientów. Do pobrania wymienionych informacji można użyć następującego podkomenda API Sentinel.

Sentinel Get-Master-Addr-by-bet

Wykonajmy powyższe polecenie dla naszego scenariusza w następujący sposób:

Sentinel GET-MASTER-ADDR-BET-NAME MASTERNODE

Omówiliśmy tylko kilka poleceń API Sentinel. Dostępnych jest kilka innych subkommmandów, takich jak Sentinel-Failover, Sentinel Info-Cache, Sentinel Masters i itp. Ponadto, wiele poleceń jest dostępnych również do celów administracyjnych. W poniższej sekcji skupimy się na procesie awaryjnym Redis Sentinel.

Proces awaryjnego Sentinel

Ponieważ nasz Sentinel jest skonfigurowany, możemy przetestować fazę awarii. Wyślijmy nasz węzeł główny do spania przez 300 sekund, co symuluje awarię w węźle głównym.

Debugowanie snu 300

Węzeł główny, który działa w porcie 7000, powinien być teraz nieosiągalny. Tak więc powiązane wartowniki zauważą, że mistrz jest niedostępny z +sdown wydarzenie. Następnie zostanie to ustawione +Odown gdzie 2 wartowniki potwierdzają, że węzeł główny jest opuszczony zgodnie z wartością kworum. Wreszcie faza awaryjna rozpocznie się i idealnie replika powinna być promowana na nowego mistrza.

Sprawdźmy ponownie adres IP węzła głównego i port.

Sentinel GET-MASTER-ADDR-BET-NAME MASTERNODE

Zgodnie z oczekiwaniami poprzednia replika została promowana do nowego mistrza, co oznacza, że ​​proces awaryjny Sentinel się powiódł. To kończy wdrożenie i testowanie naszych trzech ustawionych sentinel dla pojedynczej pary mistrzowskiej.

Wniosek

Redis Sentinel jest najbardziej niezawodnym podejściem do zapewnienia wysokiej dostępności danego instancji repliki Master Redis. Strażnik jest w stanie monitorować, powiadomić i inicjować automatyczne przełączanie awaryjne bez interwencji człowieka. Ponadto wielu wartowników razem zgadza się na fakt, że węzeł główny jest nieosiągalny, a wartość kworum jest używana jako maksymalna liczba wartowników, które należy uzgodnić podczas sprawdzania dostępności instancji głównej. Redis Sentinel oferuje łatwy w użyciu interfejs API do pobierania informacji o zdrowiu węzła głównego i powiązanych replik oraz wykonywania zadań administracyjnych.