Wyszukiwanie w witrynie

Jak skonfigurować Redis pod kątem wysokiej dostępności za pomocą Sentinel w CentOS 8 — część 2


Redis zapewnia wysoką dostępność poprzez system rozproszony Redis Sentinel. Sentinel pomaga monitorować instancje Redis, wykrywać awarie i automatycznie przełącza role, umożliwiając w ten sposób wdrożenie Redis odporne na wszelkiego rodzaju awarie.

Zawiera monitorowanie instancji Redis (mastera i replik), obsługuje powiadamianie innych usług/procesów lub administratora systemu za pomocą skryptu, automatyczne przełączanie awaryjne w celu awansowania repliki na master, gdy master ulegnie awarii i zapewni konfiguracja, aby klienci mogli odkryć bieżącego mastera oferującego określoną usługę.

W tym artykule pokazano, jak skonfigurować Redis pod kątem wysokiej dostępności za pomocą Redis Sentinel w CentOS 8, w tym konfigurować wskaźniki, sprawdzać stan konfiguracji i testować Przełączenie awaryjne Sentinel.

Warunek wstępny:

  1. Jak skonfigurować replikację Redis (z wyłączonym trybem klastra) w CentOS 8 – część 1

Konfiguracja środowiska testowego

Master Server and Sentinel1: 10.42.0.247
Redis Replica1 and Sentinel2: 10.42.0.21
Redis Replica2 and Sentinel3: 10.42.0.34

Zgodnie z dokumentacją Redis Sentinel do niezawodnego wdrożenia potrzebne są co najmniej trzy instancje Sentinel. Biorąc pod uwagę powyższą konfigurację, jeśli główny ulegnie awarii, Sentinels2 i Sentinel3 zgodzą się co do awarii i będą mogły autoryzować przełączenie awaryjne, dzięki czemu możliwość kontynuowania operacji klienckich.

Krok 1: Uruchamianie i włączanie usługi Redis Sentinel

1. W CentOS 8 usługa Redis Sentinel jest instalowana wraz z serwerem Redis (co zrobiliśmy już w konfiguracja replikacji Redis).

Aby uruchomić usługę wartowniczą Redis i włączyć jej automatyczne uruchamianie przy starcie systemu, użyj następujących poleceń systemctl. Sprawdź także, czy jest uruchomiony i działa, sprawdzając jego stan (zrób to na wszystkich węzłach):

systemctl start redis-sentinel
systemctl enable redis-sentinel
systemctl status redis-sentinel

Krok 2: Konfiguracja Redis Sentinel na wszystkich węzłach Redis

2. W tej sekcji wyjaśniamy, jak skonfigurować Sentinel na wszystkich naszych węzłach. Usługa Sentinel ma podobny format konfiguracji jak serwer Redis. Aby go skonfigurować, użyj samodokumentowanego pliku konfiguracyjnego /etc/redis-sentinel.conf.

Najpierw utwórz kopię zapasową oryginalnego pliku i otwórz go do edycji.

cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig
vi /etc/redis-sentinel.conf

3. Domyślnie Sentinel nasłuchuje na porcie 26379, sprawdź to we wszystkich instancjach. Pamiętaj, że musisz pozostawić parametr bind w komentarzu (lub ustawić go na 0.0.0.0).

port 26379

4. Następnie powiedz Sentinel, aby monitorował naszego mastera i rozważał jego stan „Obiektywnie w dół” tylko jeśli co najmniej 2 strażników kworum wyrazi zgodę. Możesz zastąpić „mymaster” niestandardową nazwą.

#On Master Server and Sentinel1
sentinel monitor mymaster 127.0.0.1 6379 2

#On Replica1 and Sentinel2
sentinel monitor mymaster 10.42.0.247 6379 2

#On Replica1 and Sentinel3
sentinel monitor mymaster 10.42.0.247 6379 2

Ważne: Instrukcja Sentinel monitor MUSI być umieszczona przed instrukcją Sentinel auth-pass, aby uniknąć błędu „Nie ma takiego mastera z określoną nazwę. ” podczas ponownego uruchamiania usługi wartowniczej.

5. Jeśli monitor Redis master ma ustawione hasło (w naszym przypadku master ma), podaj hasło, aby instancja Sentinel mogła uwierzytelnić się z chronioną instancją.

 
sentinel auth-pass mymaster Securep@55Here

6. Następnie ustaw liczbę milisekund, przez jaką jednostka główna (lub dowolna dołączona replika lub strażnik) powinna być nieosiągalna, aby można było uznać ją za stan „Subiektywnie wyłączony”.

Następująca konfiguracja oznacza, że master zostanie uznany za uszkodzony, gdy tylko nie otrzymamy żadnej odpowiedzi na nasze pingi w ciągu 5 sekund (1 sekunda odpowiada 1000 milisekundom).

sentinel down-after-milliseconds mymaster 5000

7. Następnie ustaw limit czasu przełączania awaryjnego w milisekundach, który definiuje wiele rzeczy (przeczytaj dokumentację parametru w pliku konfiguracyjnym).

sentinel failover-timeout mymaster 180000

8. Następnie ustaw liczbę replik, które można ponownie skonfigurować tak, aby jednocześnie korzystały z nowego modułu głównego po przełączeniu awaryjnym. Ponieważ mamy dwie repliki, ustawimy jedną replikę, a druga zostanie awansowana na nowego mistrza.

sentinel parallel-syncs mymaster 1

Pamiętaj, że pliki konfiguracyjne Redis Replica1 i Sentinel2 oraz Reddis Replica1 i Sentinel2 powinny być identyczne.

9. Następnie uruchom ponownie usługi Sentinel na wszystkich węzłach, aby zastosować ostatnie zmiany.

systemctl restart redis-sentinel

10. Następnie otwórz port 26379 w zaporze ogniowej na wszystkich węzłach, aby umożliwić instancjom Sentinel rozpoczęcie rozmowy i odbieranie połączeń od innych 10. >Instancje Sentinel przy użyciu polecenia firewall-cmd.

firewall-cmd --zone=public --permanent --add-port=26379/tcp
firewall-cmd --reload

11. Wszystkie repliki zostaną automatycznie wykryte. Co ważne, Sentinel automatycznie zaktualizuje konfigurację o dodatkowe informacje o replikach. Możesz to potwierdzić, otwierając plik konfiguracyjny Sentinel dla każdej instancji i przeglądając go.

Na przykład, patrząc na koniec pliku konfiguracyjnego mastera, powinieneś zobaczyć instrukcje known-sentinels i known-replica, jak pokazano na poniższym zrzucie ekranu.

Podobnie powinno być w przypadku repliki1 i repliki2.

Należy pamiętać, że konfiguracja Sentinel jest również przepisana/aktualizowana za każdym razem, gdy replika zostaje podniesiona do statusu głównego podczas przełączania awaryjnego i za każdym razem, gdy w konfiguracji zostaje wykryty nowy Sentinel.

Krok 3: Sprawdź status konfiguracji Redis Sentinel

12. Teraz sprawdź status/informacje Sentinel na urządzeniu głównym, używając polecenia info Sentinel w następujący sposób.

redis-cli -p 26379 info sentinel

Z wyniku polecenia, jak widać na poniższym zrzucie ekranu, mamy dwie repliki/podrzędne urządzenia podrzędne i trzech strażników.

13. Aby wyświetlić szczegółowe informacje o masterze (zwanym mymaster), użyj polecenia strażnik master.

redis-cli -p 26379 sentinel master mymaster

14. Aby wyświetlić szczegółowe informacje o niewolnikach i strażnikach, użyj polecenia niewolnicy strażnicy i wartownik wartownicy wydają odpowiednio polecenie.

redis-cli -p 26379 sentinel slaves mymaster
redis-cli -p 26379 sentinel sentinels mymaster

15. Następnie zapytaj o adres mastera według nazwy z instancji slave, używając polecenia sentinel get-master-addr-by-name w następujący sposób.

Dane wyjściowe powinny być adresem IP i portem bieżącej instancji głównej:

redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Krok 4: Przetestuj przełączanie awaryjne Sentinel

16. Na koniec przetestujmy automatyczne przełączanie awaryjne w naszej konfiguracji Sentinel. Na urządzeniu głównym Redis/Sentinel uśpij moduł główny Redis (działający na porcie 6379) na 60 sekund . Następnie zapytaj o adres bieżącego urządzenia głównego w replikach/urządzeniach podrzędnych w następujący sposób.

redis-cli -p 6379
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379>  debug sleep 60
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Z danych wyjściowych zapytania wynika, że nowym wzorcem jest teraz replika/podrzędny2 z adresem IP 10.42.0.34, jak widać na poniższym zrzucie ekranu.

Więcej informacji można znaleźć w dokumentacji Redis Sentinel. Jeśli jednak masz jakieś przemyślenia lub pytania, którymi chcesz się podzielić, skorzystaj z poniższego formularza opinii.

W kolejnej i ostatniej części tej serii przyjrzymy się, jak skonfigurować klaster Redis w CentOS 8. Będzie to artykuł niezależny od dwóch pierwszych.