Sådan konfigureres Redis-replikering (med klyngetilstand deaktiveret) i CentOS 8 - del 1


Redis (Remote Dictionary Server) er en meget populær og udbredt open source, hurtig, distribueret og effektiv in-memory nøgleværdi database/datastruktur server.

Det tilbyder et rigt sæt funktioner, der gør det effektivt til en lang række brugssager: som en database, cachelag, beskedmægler eller kø; anvendelig i webapplikationer, chat- og messaging-applikationer, spil, realtids dataanalyse og så meget mere.

Det understøtter fleksible datastrukturer, asynkron replikering af master-slave for at skalere læseevne og beskytte mod datatab, klientsideskæring for at skalere skriveydelse, to former for vedholdenhed til skrivning af hukommelsesdata til disk i kompakt format, gruppering partitionering. Det indeholder også automatiske failover til implementering med høj tilgængelighed via Redis Sentinel, Lua-scripting, transaktioner og mange flere.

At være en NO SQL- eller ikke-relationel database, tilbyder Redis nogle ydelsesfordele i forhold til traditionelle databasesystemer (såsom MySQL/MariaDB, PostgreSQL osv.), Fordi alle dens data ligger eller er gemt i hukommelsen, hvilket gør det let tilgængeligt for en applikation, mens traditionelle databaser skal skrive alle data til eller læse fra disk eller en ekstern kilde.

Redis er blevet et stadig mere udbredt valg til caching, hvilket giver mulighed for genbrug af cachelagrede data (gemt i en applikations hovedhukommelsesplads) i stedet for altid at spørge en database om hyppigt anvendte data. Så det er en fantastisk ledsager af RDMS (Relational Database Management Systems) for i sidste ende at forbedre applikationsydelsen.

I denne tredelte Redis tutorial-serie vil vi dække, hvordan man opsætter og bruger nogle af Redis 'nøglefunktioner, som er replikering, høj tilgængelighed ved hjælp af Redis Sentinel og Redis Cluster, artiklerne er:

Denne vejledning viser, hvordan du konfigurerer Redis-replikering (med klyngetilstand deaktiveret) i CentOS 8 Linux, herunder hvordan du installerer Redis, konfigurerer master og replikaer og tester replikationen.

Vigtigt: En Redis-klynge (dvs. en replikeringsklynge) med klyngetilstand deaktiveret har en enkelt nodegruppe (f.eks. En master og en eller to replikaer), hvor en Redis-klynge med klyngetilstand aktiveret kan bestå af to eller flere nodegrupper (f.eks. Tre mastere hver har slaver eller to).

  1. Servere med CentOS 8-installation

Redis Master Server: 10.42.0.247
Redis Replica1/Slave1: 10.42.0.21
Redis Replica2/Slave2: 10.42.0.34

Med ovenstående opsætning (som har en enkelt læse/skrive primær/masternode og 2 skrivebeskyttede replikanoder) har vi en enkelt nodegruppe, der indeholder alle klyngens data i hver node. Når en slave opretter forbindelse til en master, modtager den en indledende kopi af den fulde database, og alle data, der tidligere eksisterede om slaven, kasseres.

Desuden kan en klient kun skrive til masteren, men læse fra en hvilken som helst node i klyngen. Og når der udskrives på masteren, udbredes de til alle tilsluttede slaver til opdatering af slave-datasættene i realtid.

Trin 1: Installation af Redis på CentOS 8

1. Til at begynde med skal du logge ind på alle CentOS 8-noder via SSH og derefter installere Redis-pakken på alle noder (master og replikaer) ved hjælp af DNF-pakkehåndteringen som vist.

# dnf install @redis

2. Når Redis-pakkeinstallationen er afsluttet, skal du starte Redis-tjenesten, sætte den i stand til automatisk at starte ved hver systemstart og kontrollere, om den er i gang som følger.

# systemctl start redis
# systemctl enable redis
# systemctl status redis

3. Du kan også bekræfte, at Redis-serveren er i gang ved at kontrollere lytteporte ved hjælp af kommandoen ss som følger.

# ss -ltpn | grep redis-server

Trin 2: Konfiguration af Redis Master Server

4. Redis konfigureres ved hjælp af /etc/redis.conf-konfigurationsfilen, en selvdokumenteret eksempelkonfigurationsfil. Opret først en sikkerhedskopi af den originale fil, og åbn den derefter til redigering ved hjælp af din valgte kommandolinjeditor.

# cp /etc/redis.conf /etc/redis.conf.org
# vi /etc/redis.conf

5. Som standard er en Redis-instans konfigureret til at lytte og acceptere forbindelser på loopback-grænsefladen ved hjælp af bindedirektivet. For at kommunikere med replikerne skal masteren konfigureres til at lytte til IPv4-loopback-adressen og dens LAN-IP-adresse, dvs. 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Indstil derefter den beskyttede tilstandsparameter til nej for at tillade kommunikation med replikerne som vist.

protected-mode no

Redis lytter også til port 6379, som er indstillet ved hjælp af port -direktivet. Dette er dataporten til kommunikation med applikations-API'er eller CLI-klienter.

port 6379

7. For valgfrit at sikre master-replika-kommunikationen kan vi beskytte masteren ved hjælp af direktivet for kravspass, så klienter/replikaer skal udstede en godkendelsesadgangskode, før de kører kommandoer eller starter en replikeringssynkroniseringsproces, ellers nægter master klient/replika anmodning (husk at indstille en sikker adgangskode).

Vi bruger følgende mulighed til demonstrationsformål for at vise, hvordan det fungerer.

requirepass  [email 

8. Redis-logfiler er også gemt i /var/log/redis/redis.log-filen, dette indstilles ved hjælp af logfildirektivet, og standardserversnøjagtighedsniveauet bemærkes, defineret ved hjælp af loglevel-parameteren.

loglevel  notice
logfile  /var/log/redis/redis.log

9. Da systemd er standardsystem- og servicemanager i CentOS 8, kan du konfigurere Redis til at interagere med systemd-overvågningstræet ved at indstille den overvågede parameter til systemd.

supervised systemd

10. Når du har foretaget alle de nødvendige konfigurationer, skal du gemme filen og lukke den. Genstart derefter Redis-tjenesten for at anvende de nye ændringer.

# systemctl daemon-reload
# systemctl restart redis

11. For at få adgang til Redis-serveren skal vi bruge redis-cli (en kommandolinjegrænseflade til redis-serveren). Som standard opretter den forbindelse til serveren på localhost (ved 127.0.0.1 port 6379). Bemærk, at fordi serveren er sikret fra klienter ved hjælp af en adgangskode, skal det køre en kommando før godkendelse mislykkes.

Brug auth-kommandoen til at angive godkendelsesadgangskoden som vist i det følgende skærmbillede.

# redis-cli
127.0.0.1:6379> client list
127.0.0.1:6379> AUTH [email 
127.0.0.1:6379> client list

12. For at oprette forbindelse til en replika (efter konfiguration af dem som beskrevet i næste afsnit) skal du bruge indstillingerne -h og -p til at angive replika-IP-adressen/værtsnavnet og port henholdsvis (ikke at port 6379 skal være åben i replikaens firewall).

# redis-cli -h 10.42.0.21 -p 6379

13. Åbn derefter Redis-serverens dataport i firewallen for at tillade indgående forbindelser til masteren, og genindlæs derefter firewallreglerne ved hjælp af firewall-cmd-kommandoen som vist.

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

Trin 3: Konfiguration af Redis replika/slave-servere

14. For hurtigt at indstille en Redis-instans som en replika i farten, skal du bruge redis-cli-værktøjet og kalde kommandoen REPLICAOF som vist.

# redis-cli replicaof 10.42.0.247 6379
OR
# redis-cli
127.0.0.1:6379> REPLICAOF 10.42.0.247 6379

15. For at gøre en replikationsforbindelse permanent skal du foretage følgende ændringer i konfigurationsfilen. Start med at sikkerhedskopiere den originale fil, og åbn den derefter til redigering.

# cp /etc/redis.conf /etc/redis.conf.org
# vi /etc/redis.conf

16. For at give klienter mulighed for at oprette forbindelse til replikaen for at læse data skal du tilføje replika-IP-adressen til bindingsdirektivet.

# replica1
bind 127.0.0.1 10.42.0.21

# replica2
bind 127.0.0.1 10.42.0.34

17. For at konfigurere en Redis-forekomst som en replika skal du bruge parameteren replicaof og indstille masternodens IP-adresse (eller værtsnavn) og port som værdier.

replicaof 10.42.0.247 6379

18. Derefter, da vores masterforekomst er beskyttet ved hjælp af en adgangskode, er vi nødt til at indstille adgangskoden i replikakonfigurationen for at gøre det muligt at godkende den til masteren ved hjælp af masterauth-parameteren.

masterauth [email 

19. Når en replika desuden mister forbindelsen til masteren, eller når replikeringen er i gang, er repliken konfigureret til at svare på klientanmodninger, muligvis med "forældede" data. Men for hvis det er den første synkronisering, kan datasættet måske bare være tomt. Denne adfærd styres af parameteren replika-server-forældet data.

Og da Redis 2.6 som standard er repliker skrivebeskyttet, styres dette af replika-read-only parameteren. Du kan foretage andre replika-konfigurationsjusteringer, der passer til dine applikationsbehov.

20. Når du har foretaget alle de nødvendige ændringer, skal du genstarte Redis-tjenesten på alle replikaer.

# systemctl restart redis

21. Åbn også port 6379 i firewallen for at tillade forbindelser fra master og klienter til replikerne, og genindlæs firewallreglerne.

# firewall-cmd --zone=public --permanenent --add-port=6379/tcp
# firewall-cmd --reload

Trin 4: Kontroller replikeringsstatus for Master-replika

22. Når master-replika-replikeringskonfigurationen er færdig, kan vi kontrollere, om opsætningen fungerer fint som følger.

Kør følgende kommandoer på masteren.

# redis-cli
127.0.0.1:6379> AUTH [email 
127.0.0.1:6379> info replication

23. Kontroller også replikeringsstatus på replikerne/slaverne som følger.

# redis-cli
127.0.0.1:6379> info replication

23. Lad os nu teste replikeringen ved at indstille en nøgleværdi i masterinstansen og kontrollere, om dataene er synkroniseret med replikerne.

På herren skal du gøre dette:

# redis-cli
127.0.0.1:6379> AUTH [email 
127.0.0.1:6379> set domain 'linux-console.net'

24. Kontroller derefter, om dataene er synkroniseret med replikerne som vist.

# redis-cli
127.0.0.1:6379> get domain

25. Redis har en funktion, der gør det muligt for en masterforekomst at begrænse risikoen for at miste nogle skrivninger, hvis der ikke er nok replikaer til et bestemt antal sekunder.

Dette betyder, at en mester kan stoppe med at acceptere skrivninger, hvis der er mindre end N-replikaer tilsluttet, med et forsinkelse på mindre end eller lig med M sekunder, som kontrolleret af henholdsvis min-replikaer til at skrive og min-replikaer-max-forsinkelsesmuligheder.

For at indstille dem skal du fjerne kommentar fra dem og indstille værdierne i henhold til dine opsætningskrav i /etc/redis.conf, som vist i følgende skærmbillede. Denne konfiguration betyder, at fra sidste ping til replikaer, efter 10 sekunder, hvis der er mindre end 2 replikaer online, vil master stoppe med at acceptere skriv.

min-replicas-to-write 2
min-replicas-max-lag 10

Du kan finde flere muligheder i resten af /etc/redis.conf-konfigurationsfilen og læse mere om replikering i Redis-dokumentationen for at få flere detaljer.

I den næste artikel vil vi dække, hvordan du konfigurerer Redis til høj tilgængelighed med Sentinel i CentOS 8. Indtil da skal du forblive låst og huske at dele dine meninger og spørgsmål ved hjælp af vores kommentarformular nedenfor er der for dig at nå os.