Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hur hanterar Redis Cluster nodfel


Hur hanterar Redis Cluster nodfel


Så här hanterar Redis Cluster nodfel:

Automatisk failover

När en Redis Cluster-masternod misslyckas, kommer klustret automatiskt att främja en av replikanoderna för den mastern att bli den nya mastern. Denna failover-process sker automatiskt utan några manuella ingrepp.

De viktigaste stegen i failover-processen är:

1. De andra noderna i klustret upptäcker att masternoden har misslyckats, antingen genom klusterskvallerprotokollet eller genom att försöka ansluta till noden.

2. Klustret håller sedan ett val bland replikanoderna för den mastern. Repliken med de mest uppdaterade uppgifterna väljs som ny master.

3. Den valda repliknoden befordras till att bli den nya mastern. De andra replikerna konfigureras sedan om för att replikera från den nya mastern.

4. Klienter omdirigeras till den nya huvudnoden med hjälp av "MOVED"-felsvaret, som innehåller den nya lucka-till-nod-mappningen.

Slottäckning

För att förbli tillgänglig under nodfel kräver Redis Cluster att majoriteten av masternoderna är tillgängliga och kan kommunicera. Detta är känt som att upprätthålla "slot-täckning".

Varje huvudnod i klustret är ansvarig för en delmängd av de 16 384 hash-slotterna. Så länge som majoriteten av masters är tillgängliga och kan betjäna sina tilldelade platser, kan klustret fortsätta att fungera.

Om för många masternoder misslyckas så att de återstående masternarna inte kan täcka hela hash-slotintervallet, kommer klustret att bli otillgängligt tills de misslyckade noderna återhämtar sig eller ersätts.

Replika-kampanj

Redis Cluster förlitar sig på replikanoder för att ge hög tillgänglighet. När en master misslyckas, befordras en av dess replikanoder automatiskt till att bli den nya mastern.

Repliken med de mest uppdaterade uppgifterna väljs som ny master. Detta säkerställer att datakonsistensen upprätthålls under failover-processen.

Hantera Split-Brain

Redis Cluster använder ett kvorumbaserat tillvägagångssätt för att hantera nätverkspartitioner och undvika "split-brain"-scenarier där klustret delas upp i flera oberoende kluster.

Om en majoritet av masterna blir otillgängliga kommer de återstående noderna att avslå klientförfrågningar tills partitionen är löst. Detta säkerställer att datakonsistensen bevaras.

Genom att utnyttja dessa automatiska failover och kvorumbaserade mekanismer kan Redis Cluster tillhandahålla hög tillgänglighet och motståndskraft inför nodfel och nätverkspartitioner.

Citat:
[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