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


Redis pruža visoku dostupnost putem Redis Sentinel distribuiranog sistema. Sentinel pomaže u nadgledanju Redis instanci, otkrivanju kvarova i automatski će vršiti zamjene uloga, omogućavajući tako da se Redis implementira da se odupre bilo kakvoj vrsti kvarova.

Sadrži nadgledanje Redis instanci (master i replika), podržava obavještavanje o drugim uslugama/procesima ili administratora sistema putem skripte, automatski prelazak na grešku za promociju replike u master kada se master sruši i pruža konfiguraciju za klijente da otkriju trenutnog mastera koji nudi određenu uslugu.

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

Preduvjet:

  1. Kako postaviti Redis replikaciju (sa onemogućenim Cluster-Modeom) 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 Sentinel instance za robusnu implementaciju. Uzimajući u obzir naše gore postavljene postavke, ako master ne uspije, Sentinels2 i Sentinel3 će se složiti oko neuspjeha i moći će ovlastiti prelazak na grešku, čineći poslovanje klijenata može se nastaviti.

Korak 1: Pokretanje i omogućavanje Redis Sentinel usluge

1. Na CentOS 8, usluga Redis Sentinel je instalirana uz Redis server (što smo već radili u Postavljanje Redis replikacije).

Da pokrenete Redis sentinel uslugu i omogućite da se automatski pokrene pri pokretanju sistema, koristite sljedeće systemctl komande. Također, potvrdite da je pokrenut i radi tako što ćete provjeriti njegov status (učinite ovo 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 Redis server. Da biste ga konfigurirali, koristite /etc/redis-sentinel.conf samodokumentiranu konfiguracijsku datoteku.

Prvo napravite rezervnu kopiju originalne datoteke i otvorite je za uređivanje.

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

3. Podrazumevano, Sentinel sluša na portu 26379, provjerite ovo na svim instancama. Imajte na umu da parametar bind morate ostaviti bez komentara (ili postaviti na 0.0.0.0).

port 26379

4. Zatim recite Sentinelu da nadgleda našeg majstora i da ga razmotri u stanju "Objektivno dolje " samo ako se najmanje 2 kvorumska stražara slože. Možete zamijeniti “mymaster” sa 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 nadzornog nadzornika MORA biti postavljena prije sentinel auth-pass izjave kako bi se izbjegla greška “Nema takvog mastera sa navedeno ime. ” prilikom ponovnog pokretanja nadzorne usluge.

5. Ako Redis master za nadgledanje ima postavljenu lozinku (u našem slučaju master ima), navedite lozinku kako bi Sentinel instanca mogla autentifikovati zaštićenu instancu.

 
sentinel auth-pass mymaster Securep@55Here

6. Zatim postavite broj milisekundi u kojima bi glavni (ili bilo koja priložena replika ili stražar) trebao biti nedostupan kako bi se to smatralo u stanju “Subjektivno dolje ”.

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

sentinel down-after-milliseconds mymaster 5000

7. Zatim postavite vremensko ograničenje prelaska na grešku u milisekundama koje definira mnoge stvari (pročitajte dokumentaciju parametra u konfiguracijskoj datoteci).

sentinel failover-timeout mymaster 180000

8. Zatim postavite broj replika koje se mogu ponovo konfigurirati za korištenje novog mastera nakon prelaska na grešku u isto vrijeme. Pošto imamo dvije replike, jednu repliku ćemo postaviti jer će druga biti promovirana u novog mastera.

sentinel parallel-syncs mymaster 1

Imajte na umu da bi konfiguracijski fajlovi na Redis Replica1 i Sentinel2, i Reddis replici1 i Sentinel2 trebali biti identični.

9. Zatim ponovo pokrenite Sentinel usluge na svim čvorovima da primijenite nedavne promjene.

systemctl restart redis-sentinel

10. Zatim otvorite port 26379 u zaštitnom zidu na svim čvorovima da omogućite instancama Sentinel da počnu razgovarati, primaju veze od drugih >Sentinel instance, koristeći firewall-cmd.

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

11. Sve replike će biti automatski otkrivene. Važno je da će Sentinel automatski ažurirati konfiguraciju dodatnim informacijama o replikama. Ovo možete potvrditi otvaranjem Sentinel konfiguracijskog fajla 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ćem snimku ekrana.

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

Imajte na umu da se konfiguracija Sentinel također ponovo piše/ažurira svaki put kada se replika unaprijedi u glavni status tokom prebacivanja greške i svaki put kada se novi Sentinel otkrije u postavci.

Korak 3: Provjerite status podešavanja Redis Sentinel

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ćem snimku ekrana, imamo dvije replike/slave i tri stražara.

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

redis-cli -p 26379 sentinel master mymaster

14. Za prikaz detaljnih informacija o slave i sentinel, koristite naredbu sentinel slaves i sentinel stražarikomanduju redom.

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

15. Zatim, zatražite adresu mastera po imenu od podređenih instanci koristeći naredbu 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, hajde da testiramo automatsko prebacivanje na grešku u našem Sentinel postavci. Na Redis/Sentinel masteru, postavite Redis master (koji radi na portu 6379) da spava 60 sekundi . Zatim upitajte adresu trenutnog mastera na replikama/slaveovima 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 master je sada replica/slave2 sa IP adresom 10.42.0.34 kao što se vidi na sljedećem snimku ekrana.

Više informacija možete dobiti iz Redis Sentinel dokumentacije. Ali ako imate bilo kakva razmišljanja ili upite, obrazac za povratne informacije u nastavku je vaš pristup nama.

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