Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hvordan håndterer Redis Cluster nodefejl


Hvordan håndterer Redis Cluster nodefejl


Sådan håndterer Redis Cluster nodefejl:

Automatisk failover

Når en Redis Cluster-masterknude svigter, vil klyngen automatisk fremme en af ​​replika-knuderne, så den master bliver den nye master. Denne failover-proces sker automatisk uden nogen manuel indgriben.

De vigtigste trin i failover-processen er:

1. De andre noder i klyngen registrerer, at masterknuden har fejlet, enten gennem klyngesladderprotokollen eller ved at forsøge at oprette forbindelse til noden.

2. Klyngen afholder derefter et valg blandt replikaknuderne for den pågældende master. Replikaen med de mest opdaterede data vælges som ny master.

3. Den valgte replika node forfremmes til at blive den nye master. De andre replikaer omkonfigureres derefter til at replikere fra den nye master.

4. Klienter omdirigeres til den nye masterknude ved hjælp af 'MOVED'-fejlsvaret, som indeholder den nye slot-to-node-mapping.

Slotdækning

For at forblive tilgængelig under knudefejl kræver Redis Cluster, at størstedelen af ​​masternoder er tilgængelige og i stand til at kommunikere. Dette er kendt som opretholdelse af "slot-dækning".

Hver masterknude i klyngen er ansvarlig for en delmængde af de 16.384 hash-slots. Så længe størstedelen af ​​mastere er tilgængelige og kan betjene deres tildelte slots, kan klyngen fortsætte med at fungere.

Hvis for mange masterknudepunkter svigter, så de resterende mastere ikke kan dække hele hash-slot-området, vil klyngen blive utilgængelig, indtil de mislykkede knudepunkter genoprettes eller udskiftes.

Replika-promovering

Redis Cluster er afhængig af replika-noder for at give høj tilgængelighed. Når en master fejler, forfremmes en af ​​dens replika noder automatisk til at blive den nye master.

Replikaen med de mest opdaterede data vælges som ny master. Dette sikrer datakonsistens vedligeholdes under failover-processen.

Håndtering af split-hjerne

Redis Cluster bruger en quorum-baseret tilgang til at håndtere netværkspartitioner og undgå "split-brain"-scenarier, hvor klyngen bliver opdelt i flere uafhængige klynger.

Hvis et flertal af mastere bliver utilgængelige, vil de resterende noder afvise klientanmodninger, indtil partitionen er løst. Dette sikrer datakonsistens bevares.

Ved at udnytte disse automatiske failover og quorum-baserede mekanismer er Redis Cluster i stand til at levere høj tilgængelighed og modstandsdygtighed over for knudefejl og netværkspartitioner.

Citater:
[1] https://yifan-online.com/da/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