Tu je návod, ako Redis Cluster rieši zlyhania uzlov:
Automatické prepnutie pri zlyhaní
Keď hlavný uzol Redis Cluster zlyhá, klaster automaticky povýši jeden z replikovaných uzlov, aby sa tento hlavný uzol stal novým hlavným uzlom. Tento proces núdzového prepnutia prebieha automaticky bez akéhokoľvek manuálneho zásahu.
Kľúčové kroky v procese núdzového prepnutia sú:
1. Ostatné uzly v klastri zistia, že hlavný uzol zlyhal, buď prostredníctvom protokolu klastra alebo pokusom o pripojenie k uzlu.
2. Klaster potom vykoná voľbu medzi replikovanými uzlami pre tento hlavný server. Replika s najaktuálnejšími údajmi sa zvolí ako nová predloha.
3. Zvolený uzol repliky sa povýši na nový hlavný uzol. Ostatné repliky sa potom prekonfigurujú na replikáciu z nového hlavného servera.
4. Klienti sú presmerovaní na nový hlavný uzol pomocou chybovej odpovede `MOVED`, ktorá obsahuje nové mapovanie slot-to-node.
Pokrytie slotov
Aby bol Redis Cluster dostupný aj počas zlyhania uzlov, vyžaduje, aby bola väčšina hlavných uzlov dostupná a schopná komunikovať. Toto je známe ako udržiavanie „pokrytia slotu“.
Každý hlavný uzol v klastri je zodpovedný za podmnožinu 16 384 hash slotov. Pokiaľ je k dispozícii väčšina masterov a môže obsluhovať ich pridelené sloty, klaster môže pokračovať v prevádzke.
Ak zlyhá príliš veľa hlavných uzlov, takže zostávajúce hlavné uzly nedokážu pokryť celý rozsah hašovacích slotov, klaster sa stane nedostupným, kým sa zlyhané uzly neobnovia alebo nenahradia.
Propagácia repliky
Redis Cluster sa pri poskytovaní vysokej dostupnosti spolieha na replikované uzly. Keď hlavný server zlyhá, jeden z jeho replikovaných uzlov sa automaticky povýši na nový hlavný server.
Replika s najaktuálnejšími údajmi sa zvolí ako nová predloha. To zaisťuje, že počas procesu núdzového prepnutia sa zachová konzistentnosť údajov.
Manipulácia s rozdeleným mozgom
Redis Cluster používa prístup založený na kvóre na spracovanie sieťových oddielov a vyhýbanie sa scenárom „rozdeleného mozgu“, kde sa klaster rozdelí na viacero nezávislých klastrov.
Ak sa väčšina masterov stane nedostupnou, zostávajúce uzly odmietnu požiadavky klientov, kým sa oddiel nevyrieši. To zaisťuje zachovanie konzistencie údajov.
Využitím týchto mechanizmov automatického prepnutia a kvóra je Redis Cluster schopný poskytnúť vysokú dostupnosť a odolnosť voči zlyhaniam uzlov a sieťovým oddielom.
Citácie:[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