Hvordan sette opp en Redis-klynge i CentOS 8 - Del 3


Redis Cluster er en innebygd Redis-funksjon som støtter automatisk sharding, replikering og høy tilgjengelighet som tidligere ble implementert ved hjelp av Sentinels. Den er designet for to hovedformål: den ene er å automatisk dele datasettet mellom flere forekomster og for det andre å gi en viss grad av tilgjengelighet under partisjoner, for å fortsette operasjoner når noen forekomster (spesielt mastere) mislykkes eller ikke er i stand til å kommunisere med de fleste noder i klyngen.

Klyngen stopper imidlertid for å fungere i tilfelle større feil (f.eks. når flertallet av masterforekomster er utilgjengelige). Dessuten, hvis en master og slave mislykkes samtidig, kan ikke klyngen fortsette normale operasjoner (selv om løsningen er å legge til flere noder eller lage en asymmetri i klyngen, for å automatisk endre klyngeoppsettet).

I følge Redis-klyngedokumentasjonen krever «minimalklyngen» som fungerer som forventet å inneholde minst 3 hovednoder. Men det mest passende oppsettet for høy tilgjengelighet bør ha minst 6 noder med tre mastere og tre slaver, hver master har en slave.

Viktig: Redis Cluster har også noen begrensninger som er mangel på støtte for NATted miljøer, så vel som de der IP-adresser eller TCP-porter er omdefinert for forekomst under Docker. I tillegg støtter ikke alle klientbiblioteker det.

Denne artikkelen viser hvordan du setter opp en Redis-klynge (med klyngemodus deaktivert) i CentOS 8. Den inkluderer hvordan du installerer Redis, konfigurerer klyngenodene, oppretter en klynge og tester klyngens failover.

Merk: For denne veiledningen vil vi bruke ferske/tomme Redis-forekomster for å kjøre klyngemodusen. Klyngemodusen vil ikke fungere med enkelte konfigurasjoner gjort i de to første veiledningene i Redis-serien vår, spesielt fungerer den ikke når kopien av parameteren brukes.

Forutsetninger:

  1. Servere med CentOS 8-installasjon

Test miljøoppsett

Redis Master1: 10.42.0.247
Redis Master2: 10.42.0.197
Redis Master3: 10.42.0.132

Redis Slave1: 10.42.0.200
Redis Slave2: 10.42.0.21
Redis Slave3: 10.42.0.34

Oppsettet vårt har 3 lese-/skrive-masternoder og 3 skrivebeskyttede replikanoder, hver master har en replika, så tre shards inneholder alle klyngens data i hver node. En applikasjons-API- eller CLI-klient kan bare skrive til masternodene, men lese fra en hvilken som helst node i klyngen.

Trinn 1: Installere Redis på alle noder

1. Logg på alle forekomstene via SSH, og kjør deretter følgende kommando for å installere Redis-modulen ved å bruke DNF-pakkebehandlingen som vist.

dnf module install redis

2. Start deretter Redis-tjenesten, aktiver den til å starte automatisk ved systemoppstart og kontroller statusen for å bekrefte at den kjører (bekreft tjenesten på alle de 6 forekomstene ):

systemctl start redis
systemctl enable redis
systemctl status redis

Trinn 2: Konfigurere Redis-instanser på alle noder

3. Denne delen beskriver hvordan du konfigurerer Redis-klyngenodene. Husk å utføre konfigurasjonene her på alle nodene.

Bruk /etc/redis.conf-konfigurasjonsfilen for å konfigurere Redis-serveren. Som en anbefalt praksis, lag en sikkerhetskopi av den originale filen før du redigerer den ved å bruke en kommandolinjetekstredigerer etter eget valg.

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

4. Finn deretter følgende konfigurasjonsparametere og rediger verdiene som vist. Parameteren bind setter grensesnittet til Redis-serveren vil lytte på, sett verdien til forekomsten LAN IP. Fjern 127.0.0.1 fordi vi skjønte at det å la det være der forsinker prosessen med å lage klynge, spesielt stadiet med å bli med i klyngen.

bind  10.42.0.247

Sett deretter beskyttet modus til no for å tillate tilkoblinger fra de andre forekomstene på klyngen.

protected-mode no

Portparameteren definerer porten Redis-serveren vil lytte på for tilkoblinger, standard er 6379. Dette er dataporten for å kommunisere med klienter.

port 6379

5. Det neste settet med parametere vil aktivere klyngemodus og angi noen av dens nyttige funksjoner. Parameteren klyngeaktivert, når den er satt til ja, aktiverer klyngemodusen.

cluster-enabled yes

Deretter setter cluster-config-file-parameteren navnet på en klyngenodes klyngekonfigurasjonsfil (f.eks. nodes-6379.conf). Filen er opprettet i arbeidskatalogen (standard er /var/lib/redis definert ved hjelp av dir-parameteren) og kan ikke redigeres av brukeren.

cluster-config-file nodes-6379.conf

Det neste nyttige klyngealternativet er cluster-node-timeout, det brukes til å angi den maksimale tiden i millisekunder en forekomst kan være utilgjengelig for å bli vurdert i en feiltilstand. En verdi på 15000 tilsvarer 15 sekunder.

cluster-node-timeout 15000

6. Vi må også aktivere Redis-persistens på disk. Vi kan bruke en av utholdenhetsmodusene, det er Bare tilføy fil (AOF): den logger (i filen appendonly.aof opprettet under arbeidskatalogen) hver skriveoperasjon som mottas av serveren. Dataene spilles av under serveroppstarten for å rekonstruere det originale datasettet.

For å aktivere det, sett tillegg-parameteren til ja.

appendonly yes

7. Etter å ha gjort alle endringene, start Redis-tjenesten på nytt på alle nodene for å bruke de nylige endringene.

systemctl restart redis

8. På dette tidspunktet bør hver klyngennode nå ha en ID. Du kan sjekke dette i loggfilen på /var/log/redis/redis.log.

cat /var/log/redis/redis.log

9. Deretter åpner du port 6397 og 16379 på alle forekomstene. Den senere porten brukes for klyngebussen (en node-til-node kommunikasjonskanal som bruker en binær protokoll). Dette er et grunnleggende krav for Redis cluster TCP-tilkoblinger.

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

Trinn 3: Opprette Redis-klyngen

10. For å opprette klyngen, bruk redis-cli-kommandolinje-klienten som følger. --cluster create muliggjør cluster-oppretting og --cluster-replicas 1 betyr å opprette én replika per master.

For oppsettet vårt som har 6 noder, vil vi ha 3 mastere og 3 slaver.

Merk at de første 6 nodene vil bli betraktet som mastere (M) og de neste tre vil bli betraktet som slaver (S). Den første slaven, dvs. 10.42.0.200:6379 replikerer den første masteren, dvs. 10.42.0.247:6379, den andre slaven replikerer den andre masteren, i den rekkefølgen.

Følgende kommando er formatert på en måte at resultatet vil representere vårt logiske oppsett ovenfor.

redis-cli --cluster create 10.42.0.247:6379 10.42.0.197:6379 10.42.0.132:6379 10.42.0.200:6379 10.42.0.21:6379 10.42.0.34:6379 --cluster-replicas 1

11. Når klyngen er opprettet, kjør følgende kommando på en hvilken som helst vert (spesifiser IP-adressen ved hjelp av -h-flagget) for å liste alle klyngenoder.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes

Du bør være i stand til å se alle klyngenodene, med slavene som indikerer deres mestere, som vist i følgende skjermbilde.

De forskjellige feltene er i denne rekkefølgen: node-ID, IP-adresse:port, flagg, siste ping sendt, siste pong mottatt, konfigurasjonsepoke, koblingstilstand, spor (for mastere).

Trinn 4: Testing av Redis Cluster Failover

12. I denne delen vil vi demonstrere hvordan du tester en klyngefailover. Først, la oss merke mesterne.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Legg også merke til Redis-slavene.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

13. La oss deretter stoppe Redis-tjenesten på en av masternodene, f.eks. 10.42.0.197 og sjekke alle masternoder i klyngen.

systemctl stop redis
redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

Fra følgende skjermbilde kan du se at noden 10.42.0.197:6367 er i feiltilstand og slaven 10.42.0.21:6379 har blitt forfremmet til masterstatus.

14. La oss nå starte Redis-tjenesten igjen på den mislykkede noden og sjekke alle masterne i klyngen.

systemctl start redis
redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Sjekk også klyngeslavene for å bekrefte at den mislykkede masteren nå er en slave.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

Trinn 5: Testing av datareplikering på tvers av Redis-klyngen

15. Denne siste delen forklarer hvordan du bekrefter klyngedatareplikering. Vi vil lage en nøkkel og verdi på en av masterne, og prøve å lese den fra alle klyngenodene som følger. Bruk -c-bryteren for å aktivere klyngestøtte under redis-cli-verktøyet og få tilgang til data i klyngemodus.

redis-cli -c -h 10.42.0.247 -p 6379 set name 'TecMint.com'
redis-cli -c -h 10.42.0.247 -p 6379 get name
redis-cli -c -h 10.42.0.21 -p 6379 get name
redis-cli -c -h 10.42.0.132 -p 6379 get name
redis-cli -c -h 10.42.0.200 -p 6379 get name
redis-cli -c -h 10.42.0.197 -p 6379 get name
redis-cli -c -h 10.42.0.34 -p 6379 get name

Poenget er at Redis-klyngen er den foretrukne måten å få automatisk sharding, replikering og høy tilgjengelighet. Det er mange andre godt dokumenterte konfigurasjonsparametere i resten av /etc/redis.conf-filen, du kan finne mer informasjon i den offisielle dokumentasjonen: Redis cluster tutorial og Redis cluster specification.

Dette bringer oss til slutten av den tredelte Redis-opplæringsserien. Tilbakemeldingsskjemaet nedenfor kan brukes til å legge inn spørsmål eller kommentarer.