Iată cum Redis Cluster tratează defecțiunile nodurilor:
Failover automat
Când un nod master Redis Cluster eșuează, clusterul va promova automat unul dintre nodurile replica pentru ca acel master să devină noul master. Acest proces de failover are loc automat, fără nicio intervenție manuală.
Pașii cheie în procesul de failover sunt:
1. Celelalte noduri din cluster detectează că nodul master a eșuat, fie prin protocolul de bârfă a clusterului, fie încercând să se conecteze la nod.
2. Clusterul deține apoi o alegere între nodurile replică pentru acel master. Replica cu cele mai actualizate date este aleasă ca noul master.
3. Nodul replica ales este promovat pentru a deveni noul maestru. Celelalte replici sunt apoi reconfigurate pentru a se replica de la noul master.
4. Clienții sunt redirecționați către noul nod master folosind răspunsul de eroare `MOVED`, care conține noua mapare slot-to-nod.
Acoperire slot
Pentru a rămâne disponibil în timpul defecțiunilor nodurilor, Redis Cluster necesită ca majoritatea nodurilor master să fie disponibile și capabile să comunice. Acest lucru este cunoscut ca menținerea „acoperirii sloturilor”.
Fiecare nod master din cluster este responsabil pentru un subset din cele 16.384 de sloturi hash. Atâta timp cât majoritatea master-urilor sunt disponibile și pot servi sloturile lor atribuite, clusterul poate continua să funcționeze.
Dacă prea multe noduri master eșuează astfel încât master-urile rămase nu pot acoperi întreaga gamă de sloturi hash, clusterul va deveni indisponibil până când nodurile eșuate se recuperează sau sunt înlocuite.
Promoție Replica
Redis Cluster se bazează pe noduri de replică pentru a oferi disponibilitate ridicată. Când un master eșuează, unul dintre nodurile sale replica este promovat automat pentru a deveni noul master.
Replica cu cele mai actualizate date este aleasă ca noul master. Acest lucru asigură menținerea coerenței datelor în timpul procesului de failover.
Gestionarea creierului split
Redis Cluster folosește o abordare bazată pe cvorum pentru a gestiona partițiile de rețea și pentru a evita scenariile de „creier divizat” în care clusterul este împărțit în mai multe clustere independente.
Dacă majoritatea master-urilor devin indisponibile, nodurile rămase vor refuza solicitările clientului până când partiția este rezolvată. Acest lucru asigură păstrarea coerenței datelor.
Prin folosirea acestor mecanisme automate de failover și de cvorum, Redis Cluster este capabil să ofere disponibilitate și rezistență ridicate în fața defecțiunilor nodurilor și a partițiilor de rețea.
Citate:[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