Slik konfigurerer du Redis-replikering (med klyngemodus deaktivert) i CentOS 8 - del 1


Redis (Remote Dictionary Server) er en veldig populær og mye brukt åpen kildekode, rask, distribuert og effektiv nøkkelverdi-database-/datastrukturserver i minnet.

Den tilbyr et rikt sett med funksjoner som gjør det effektivt for et bredt spekter av brukstilfeller: som en database, hurtigbufferlag, meldingsmegler eller kø; anvendelig i nettapplikasjoner, chat- og meldingsapplikasjoner, spill, sanntidsdataanalyse og mye mer.

Den støtter fleksible datastrukturer, master-slave asynkron replikering for å skalere leseytelse og beskytte mot datatap, sharding på klientsiden for å skalere skriveytelse, to former for persistens for å skrive data i minnet til disk i et kompakt format, klynging og oppdeling. Den har også automatiske failovers for distribusjon med høy tilgjengelighet via Redis Sentinel, Lua-skripting, transaksjoner og mange flere.

Som en NO SQL eller ikke-relasjonell database, tilbyr Redis noen ytelsesfordeler i forhold til tradisjonelle databasesystemer (som MySQL/MariaDB, PostgreSQLosv.), fordi alle dataene ligger eller er lagret i minnet, noe som gjør dem lett tilgjengelige for en applikasjon, mens tradisjonelle databaser må skrive alle data til eller lese fra disk eller en ekstern kilde.

Redis har blitt et stadig mer utbredt valg for hurtigbufring, som gjør det mulig å gjenbruke hurtigbufrede data (lagret i en applikasjons hovedminneplass) i stedet for alltid å spørre en database etter ofte brukte data. Så det er en fantastisk følgesvenn av RDMS (Relational Database Management Systems) for til slutt å forbedre applikasjonsytelsen.

I denne tredelte Redis opplæringsserien vil vi dekke hvordan du setter opp og bruker noen av Redis sine nøkkelfunksjoner som er replikering, høy tilgjengelighet ved å bruke Redis Sentinel og >Redis Cluster, artiklene er:

Denne veiledningen viser hvordan du konfigurerer Redis-replikering (med klyngemodus deaktivert) i CentOS 8 Linux, inkludert hvordan du installerer Redis, konfigurerer masteren og replikaer, og test replikasjonen.

Viktig: En Redis-klynge (dvs. en replikeringsklynge) med klyngemodus deaktivert har en enkelt nodegruppe ( for eksempel en master og en eller to replikaer) der en Redis-klynge med klyngemodus aktivert kan bestå av to eller flere nodegrupper (f.eks. tre mastere som hver har slaver eller to).

Forutsetninger:

  1. Servere med CentOS 8-installasjon

Test miljøoppsett

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

Med oppsettet ovenfor (som har en enkelt lese/skrive primær/masternode og 2 skrivebeskyttede replikanoder), har vi en enkelt nodegruppe som inneholder alle klyngens data i hver node. Når en slave kobler til en master, mottar den en første kopi av hele databasen, og alle data som tidligere fantes på slaven vil bli forkastet.

Dessuten kan en klient bare skrive til masteren, men lese fra hvilken som helst node i klyngen. Og mens skrivingene utføres på masteren, forplantet de seg til alle tilkoblede slaver for å oppdatere slavedatasettene i sanntid.

Trinn 1: Installere Redis på CentOS 8

1. Til å begynne med, logg inn på alle CentOS 8-nodene via SSH, og installer deretter Redis-pakken på alle nodene (master og replikaer) ) ved å bruke DNF-pakkebehandleren som vist.


dnf install @redis

2. Når installasjonen av Redis-pakken er fullført, start Redis-tjenesten, aktiver den til å starte automatisk ved hver systemoppstart og sjekk om den er oppe og går som følger.

systemctl start redis
systemctl enable redis
systemctl status redis

3. Du kan også bekrefte at Redis-serveren er oppe og kjører ved å sjekke lytteportene ved å bruke ss-kommandoen, som følger.

ss -ltpn | grep redis-server

Trinn 2: Konfigurere Redis Master Server

4. Redis konfigureres ved å bruke /etc/redis.conf konfigurasjonsfilen, en selvdokumentert eksempel på konfigurasjonsfilen. Lag først en sikkerhetskopi av den opprinnelige filen, og åpne den for redigering ved å bruke den valgte kommandolinjeredigereren.

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

5. Som standard er en Redis-forekomst konfigurert til å lytte og godta tilkoblinger på loopback-grensesnittet ved å bruke bind-direktivet. For å kommunisere med replikaene, bør masteren konfigureres til å lytte på IPv4 tilbakekoblingsadressen og dens LAN IP-adresse, dvs. 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Sett deretter parameteren for beskyttet modus til no for å tillate kommunikasjon med replikaene som vist.

protected-mode no

Redis lytter også på port 6379 som er satt ved hjelp av port-direktivet. Dette er dataporten for kommunikasjon med applikasjons-APIer eller CLI-klienter.

port 6379

7. For å eventuelt sikre master-replika-kommunikasjonen, kan vi beskytte masteren ved å bruke requirepass-direktivet, slik at klientene/replikaene må utstede et autentiseringspassord før du kjører noen kommandoer eller starter en replikeringssynkroniseringsprosess, ellers vil masteren avslå klient-/replikaforespørselen (husk å angi et sikkert passord).

Vi vil bruke følgende alternativ for demonstrasjonsformål, for å vise hvordan det fungerer.

requirepass  Securep@55Here

8. Dessuten lagres Redis-logger i /var/log/redis/redis.log-filen, denne angis ved hjelp av logfile-direktivet og standard servernivå er notice, definert ved hjelp av loglevel-parameteren.

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

9. Siden systemd er standard system- og tjenesteadministrator i CentOS 8, kan du konfigurere Redis til å samhandle med systemd tilsynstreet ved å sette parameteren supervised til systemd.

supervised systemd

10. Etter å ha gjort alle nødvendige konfigurasjoner, lagre filen og lukk den. Start deretter Redis-tjenesten på nytt for å bruke de nye endringene.

systemctl daemon-reload
systemctl restart redis

11. For å få tilgang til Redis-serveren, må vi bruke redis-cli (et kommandolinjegrensesnitt til redis-serveren). Som standard kobles den til serveren på localhost (ved 127.0.0.1 port 6379). Merk at fordi serveren er sikret mot klienter ved hjelp av et passord, bør kjøring av en kommando før autentisering mislykkes.

Bruk kommandoen autentisering for å oppgi autentiseringspassordet som vist i følgende skjermbilde.

redis-cli
127.0.0.1:6379> client list
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> client list

12. For å koble til en replika (etter å ha konfigurert dem som beskrevet i neste avsnitt), bruk -h og -p alternativer for å spesifisere replikens IP-adresse/vertsnavn og port (ikke at port 6379 må være åpen i replikas brannmur).

redis-cli -h 10.42.0.21 -p 6379

13. Deretter åpner du Redis-serverdataporten i brannmuren for å tillate innkommende tilkoblinger til masteren, og last deretter inn brannmurreglene på nytt ved å bruke brannmur-cmd-kommandoen som vist.

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

Trinn 3: Konfigurere Redis Replica/Slave Servers

14. For raskt å angi en Redis-forekomst som en replika i farten, bruk redis-cli-verktøyet og kall REPLICAOF kommando 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 å gjøre en replikeringstilkobling permanent, må du gjøre følgende endringer i konfigurasjonsfilen. Start med å sikkerhetskopiere den opprinnelige filen, og åpne den for redigering.

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

16. For å la klienter koble seg til replikaen for å lese data, legg til replika-IP-adressen i bindingsdirektivet.

replica1
bind 127.0.0.1 10.42.0.21

replica2
bind 127.0.0.1 10.42.0.34

Sette en Redis-forekomst som en replika

17. For å konfigurere en Redis-forekomst som en replika, bruk parameteren replicaof og sett masternodens IP-adresse (eller vertsnavn) og port som verdier.

replicaof 10.42.0.247 6379

Sette Replica til å autentisere til masteren

18. Siden hovedforekomsten vår er beskyttet med et passord, må vi angi passordet i replikakonfigurasjonen for å aktivere den til å autentisere til masteren ved å bruke masterautentiseringen parameter.

masterauth Securep@55Here

19. I tillegg, når en replika mister forbindelsen til masteren, eller når replikeringen er i gang, er replikaen konfigurert til å svare på klientforespørsler, muligens med «utdatert > " data. Men for hvis det er den første synkroniseringen, kan datasettet bare være tomt. Denne oppførselen kontrolleres av parameteren replica-serve-stale-data.

Og siden Redis 2.6 som standard replikaer er skrivebeskyttet, kontrolleres dette av parameteren replika-skrivebeskyttet. Du kan gjøre andre replikakonfigurasjonsjusteringer for å passe dine applikasjonsbehov.

20. Når du har gjort alle nødvendige endringer, starter du Redis-tjenesten på nytt på alle replikaer.

systemctl restart redis

21. Åpne også port 6379 i brannmuren for å tillate tilkoblinger fra masteren og klientene til replikaene, og last inn brannmurreglene på nytt.

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

Trinn 4: Sjekk master-replika-replikeringsstatus

22. Når master-replika-replikeringskonfigurasjonen er fullført, kan vi sjekke om oppsettet fungerer som følger.

Kjør følgende kommandoer på masteren.

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> info replication

23. Sjekk også replikeringsstatusen på replikaene/slavene som følger.

redis-cli
127.0.0.1:6379> info replication

23. La oss nå teste replikeringen ved å angi en nøkkelverdi i hovedforekomsten og sjekke om dataene er synkronisert med replikaene.

Gjør dette på masteren:

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> set domain 'linux-console.net'

24. Deretter sjekker du om dataene er synkronisert til replikaene som vist.

redis-cli
127.0.0.1:6379> get domain

Beskytte masterforekomsten mot risikoen for å miste noen skriverier

25. Redis har en funksjon som gjør det mulig for en masterinstans å begrense risikoen for å miste noen skrivinger i tilfelle det ikke er nok replikaer tilgjengelig, til et spesifisert antall sekunder.

Dette betyr at en master kan slutte å godta skrivinger hvis det er mindre enn N replikaer koblet til, med en forsinkelse mindre eller lik M sekunder, kontrollert av min. -replicas-to-write og min-replicas-max-lag henholdsvis.

For å angi dem, fjern kommentarer og angi verdiene i henhold til oppsettkravene dine i /etc/redis.conf, som vist i følgende skjermbilde. Denne konfigurasjonen betyr at, fra siste ping til replikaer, etter 10 sekunder, hvis det er mindre enn 2 replikaer online, vil masteren slutte å godta skrivinger.

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

Du finner flere alternativer i resten av /etc/redis.conf-konfigurasjonsfilen og for mer detaljer kan du lese om replikering i Redis-dokumentasjonen.

I den neste artikkelen vil vi dekke hvordan du setter opp Redis for høy tilgjengelighet med Sentinel i CentOS 8. Inntil da, hold deg låst og husk å dele tankene og spørsmålene dine ved å bruke kommentarskjemaet nedenfor. Du kan nå oss.