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:
- 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.