Kako postaviti Redis za visoku dostupnost sa Sentinelom u CentOS 8 - 2. dio


Redis pruža visoku dostupnost putem Redis Sentinel distribuiranog sustava. Sentinel pomaže u nadziranju Redis instanci, otkrivanju kvarova i automatski će izvršiti izmjene uloga, čime se omogućuje da implementacija Redisa odoli svim vrstama kvarova.

Sadrži nadgledanje instanci Redis (master i replike), podržava obavijest o drugim uslugama/procesima ili administratoru sustava putem skripte, automatski failover za promicanje replike u master kada master padne i pruža konfiguracija za klijente kako bi otkrili trenutnog majstora koji nudi određenu uslugu.

Ovaj članak pokazuje kako postaviti Redis za visoku dostupnost s Redis Sentinel u CentOS 8, uključujući konfiguriranje stražara, provjeru statusa postavljanja i testiranje Preusmjeravanje greške Sentinel.

Preduvjet:

  1. Kako postaviti Redis replikaciju (s onemogućenim načinom klastera) u CentOS 8 – 1. dio

Postavljanje testnog okruženja

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

Prema dokumentaciji Redis Sentinel, potrebne su najmanje tri instance Sentinela za robusnu implementaciju. Uzimajući u obzir našu postavku iznad, ako master zakaže, Sentinels2 i Sentinel3 će se složiti oko kvara i moći će autorizirati failover, čineći poslovanje s klijentima može se nastaviti.

Korak 1: Pokretanje i omogućavanje usluge Redis Sentinel

1. Na CentOS 8, usluga Redis Sentinel instalirana je uz Redis poslužitelj (što smo već učinili u Redis Replication Setup).

Da biste pokrenuli uslugu Redis sentinel i omogućili joj automatsko pokretanje pri pokretanju sustava, koristite sljedeće naredbe systemctl. Također, potvrdite da radi i radi provjerom njegovog statusa (učinite to na svim čvorovima):

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

Korak 2: Konfiguriranje Redis Sentinela na svim Redis čvorovima

2. U ovom odjeljku objašnjavamo kako konfigurirati Sentinel na svim našim čvorovima. Usluga Sentinel ima sličan format konfiguracije kao poslužitelj Redis. Da biste ga konfigurirali, upotrijebite /etc/redis-sentinel.conf samodokumentiranu konfiguracijsku datoteku.

Najprije izradite sigurnosnu kopiju izvorne datoteke i otvorite je za uređivanje.

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

3. Prema zadanim postavkama, Sentinel sluša na portu 26379, provjerite to na svim instancama. Imajte na umu da morate ostaviti parametar bind komentiran (ili postaviti na 0.0.0.0).

port 26379

4. Zatim recite Sentinelu da nadgleda naš master i da ga razmotri u stanju “Objektivno neispravan” samo ako se slažu najmanje 2 stražara kvoruma. Možete zamijeniti “mymaster ” prilagođenim imenom.

#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

Važno: Izjava sentinel monitor MORA biti postavljena prije sentinel auth-pass izjave kako bi se izbjegla pogreška “Nema takvog glavnog s navedeni naziv. ” prilikom ponovnog pokretanja usluge sentinel.

5. Ako Redis master za nadgledanje ima postavljenu lozinku (u našem slučaju master ima), navedite lozinku kako bi se instanca Sentinela mogla autentificirati sa zaštićenom instancom.

 
sentinel auth-pass mymaster Securep@55Here

6. Zatim postavite broj milisekundi tijekom kojih bi master (ili bilo koja priložena replika ili stražar) trebao biti nedostupan da bi se smatralo da je u stanju “Subjektivno neispravan”.

Sljedeća konfiguracija znači da će se master smatrati neispravnim čim ne primimo nikakav odgovor od naših pingova unutar 5 sekundi (1 sekunda je ekvivalentna 1000 milisekundi).

sentinel down-after-milliseconds mymaster 5000

7. Zatim postavite vremensko ograničenje za prestanak greške u milisekundama koje definira mnoge stvari (pročitajte dokumentaciju o parametru u konfiguracijskoj datoteci).

sentinel failover-timeout mymaster 180000

8. Zatim postavite broj replika koje se mogu rekonfigurirati za istovremenu upotrebu novog mastera nakon prelaska u grešku. Budući da imamo dvije replike, postavit ćemo jednu repliku jer će druga biti promaknuta u novog majstora.

sentinel parallel-syncs mymaster 1

Imajte na umu da bi konfiguracijske datoteke na Redis Replica1 i Sentinel2 i Reddis Replica1 i Sentinel2 trebale biti identične.

9. Zatim ponovno pokrenite usluge Sentinel na svim čvorovima kako biste primijenili nedavne promjene.

systemctl restart redis-sentinel

10. Zatim otvorite priključak 26379 u vatrozidu na svim čvorovima kako biste omogućili instancama Sentinel da počnu razgovarati, primaju veze od drugih Sentinelinstance, koristeći firewall-cmd.

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

11. Sve će se replike automatski otkriti. Važno je da će Sentinel automatski ažurirati konfiguraciju dodatnim informacijama o replikama. To možete potvrditi otvaranjem konfiguracijske datoteke Sentinel za svaku instancu i pregledavanjem.

Na primjer, kada pogledate kraj glavne konfiguracijske datoteke, trebali biste vidjeti izjave known-sentinels i known-replica kao što je prikazano na sljedećoj snimci zaslona.

Trebao bi biti isti slučaj na replici1 i replici2.

Imajte na umu da se konfiguracija Sentinel također prepisuje/ažurira svaki put kada se replika promakne u glavni status tijekom failovera i svaki put kada se u postavci otkrije novi Sentinel.

Korak 3: Provjerite status postavljanja Redis Sentinela

12. Sada provjerite status/informacije Sentinel na masteru koristeći naredbu info sentinel kako slijedi.

redis-cli -p 26379 info sentinel

Iz izlaza naredbe kao što se vidi na sljedećoj snimci zaslona, imamo dvije replike/slave i tri stražara.

13. Za prikaz detaljnih informacija o masteru (zvanom mymaster), koristite naredbu sentinel master.

redis-cli -p 26379 sentinel master mymaster

14. Za prikaz detaljnih informacija o slaves i sentinelima koristite naredbu sentinel slaves i sentinel stražariodnosno naredba.

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

15. Zatim zatražite adresu nadređenog po imenu od pomoćnih instanci pomoću naredbe sentinel get-master-addr-by-name kako slijedi.

Izlaz bi trebao biti IP adresa i port trenutne glavne instance:

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

Korak 4: Testirajte Sentinel Failover

16. Na kraju, testirajmo automatsko prebacivanje u slučaju kvara u našoj postavci Sentinel. Na Redis/Sentinel masteru, postavite Redis master (radi na portu 6379) da spava 60 sekundi . Zatim upitajte adresu trenutnog mastera na replikama/podređenim uređajima kako slijedi.

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

Iz izlaza za upit, novi glavni je sada replica/slave2 s IP adresom 10.42.0.34 kao što se vidi na sljedećoj snimci zaslona.

Više informacija možete dobiti u dokumentaciji Redis Sentinela. Ali ako imate bilo kakva razmišljanja ili pitanja za podijeliti, obrazac za povratne informacije u nastavku vaš je pristup nama.

U sljedećem i posljednjem dijelu ove serije, pogledat ćemo kako postaviti Redis klaster u CentOS 8. To će biti neovisan članak od prva dva.