Her er hvordan Redis Cluster håndterer nodefeil:
Automatisk failover
Når en Redis Cluster-masternode mislykkes, vil klyngen automatisk fremme en av replikanodene for den masteren til å bli den nye masteren. Denne failover-prosessen skjer automatisk uten noen manuell intervensjon.
Nøkkeltrinnene i failover-prosessen er:
1. De andre nodene i klyngen oppdager at masternoden har feilet, enten gjennom klyngesladderprotokollen eller ved å forsøke å koble til noden.
2. Klyngen avholder deretter et valg blant replika-nodene for den masteren. Replikaen med de mest oppdaterte dataene velges som ny master.
3. Den valgte replika-noden forfremmes til å bli den nye masteren. De andre replikaene blir deretter rekonfigurert til å replikere fra den nye masteren.
4. Klienter blir omdirigert til den nye hovednoden ved å bruke "FLYTTET" feilrespons, som inneholder den nye spor-til-node-tilordningen.
Spordekning
For å forbli tilgjengelig under nodefeil krever Redis Cluster at flertallet av masternodene er tilgjengelige og i stand til å kommunisere. Dette er kjent som å opprettholde "slot-dekning".
Hver hovednode i klyngen er ansvarlig for et undersett av de 16 384 hash-sporene. Så lenge flertallet av masterne er tilgjengelige og kan betjene sine tildelte plasser, kan klyngen fortsette å operere.
Hvis for mange masternoder svikter slik at de gjenværende masterne ikke kan dekke hele hash-sporområdet, vil klyngen bli utilgjengelig inntil de mislykkede nodene gjenopprettes eller erstattes.
Replika-kampanje
Redis Cluster er avhengig av replikanoder for å gi høy tilgjengelighet. Når en master mislykkes, blir en av replikanodene automatisk forfremmet til å bli den nye masteren.
Replikaen med de mest oppdaterte dataene velges som ny master. Dette sikrer at datakonsistensen opprettholdes under failover-prosessen.
Håndtering av splitt-hjerne
Redis Cluster bruker en quorum-basert tilnærming for å håndtere nettverkspartisjoner og unngå "split-brain"-scenarier der klyngen blir delt inn i flere uavhengige klynger.
Hvis et flertall av mastere blir utilgjengelige, vil de gjenværende nodene nekte klientforespørsler til partisjonen er løst. Dette sikrer at datakonsistensen bevares.
Ved å utnytte disse automatiske failover og quorum-baserte mekanismene, er Redis Cluster i stand til å gi høy tilgjengelighet og motstandskraft i møte med nodefeil og nettverkspartisjoner.
Sitater:[1] https://yifan-online.com/en/km/article/detail/16750
[2] https://stackoverflow.com/questions/63878562/two-failure-support-in-3-node-redis-cluster
[3] https://redis.io/docs/latest/operate/oss_and_stack/management/scaling/
[4] https://redis.io/docs/latest/commands/cluster-nodes/
[5] https://github.com/lettuce-io/lettuce-core/issues/2318