A Redis Cluster a következőképpen kezeli a csomóponti hibákat:
Automatikus feladatátvétel
Ha egy Redis Cluster főcsomópont meghibásodik, a fürt automatikusan előlépteti az egyik replikacsomópontot, hogy az új főcsomópont legyen. Ez a feladatátvételi folyamat automatikusan, manuális beavatkozás nélkül történik.
A feladatátvételi folyamat legfontosabb lépései a következők:
1. A fürt többi csomópontja észleli, hogy a főcsomópont meghibásodott, akár a fürt pletykaprotokollján keresztül, akár úgy, hogy megpróbál csatlakozni a csomóponthoz.
2. A fürt ezután kiválasztást tart az adott mester replika csomópontjai között. A legfrissebb adatokat tartalmazó replikát választják új mesternek.
3. A kiválasztott replikacsomópontot előléptetik az új mesterré. A többi replika ezután újrakonfigurálva van, hogy az új mesterről replikáljanak.
4. A kliensek átirányításra kerülnek az új főcsomópontra a "MOVED" hibaválasz használatával, amely tartalmazza az új slot-node leképezést.
Slot lefedettség
Ahhoz, hogy a Redis Cluster elérhető maradjon a csomópontok meghibásodása esetén, megköveteli, hogy a fő csomópontok többsége elérhető legyen, és képes legyen kommunikálni. Ez a „hely-lefedettség” fenntartása.
A fürt minden fő csomópontja a 16 384 hash-rés egy részhalmazáért felelős. Amíg a mesterek többsége elérhető, és ki tudja szolgálni a hozzájuk rendelt réseket, a fürt továbbra is működhet.
Ha túl sok főcsomópont meghibásodik, és a fennmaradó mesterek nem tudják lefedni a teljes hash-réstartományt, a fürt elérhetetlenné válik mindaddig, amíg a meghibásodott csomópontok helyreállnak vagy ki nem cserélik.
Replika promóció
A Redis Cluster replika csomópontokra támaszkodik a magas rendelkezésre állás érdekében. Ha egy mester meghibásodik, az egyik replikacsomópontja automatikusan előléptet az új mesterré.
A legfrissebb adatokat tartalmazó replikát választják új mesternek. Ez biztosítja az adatok konzisztenciájának megőrzését a feladatátvételi folyamat során.
A megosztott agy kezelése
A Redis Cluster kvórum alapú megközelítést használ a hálózati partíciók kezelésére, és elkerüli az olyan „megosztott agy” forgatókönyveket, amikor a fürt több független fürtre oszlik.
Ha a vezérlők többsége elérhetetlenné válik, a fennmaradó csomópontok elutasítják az ügyfél kéréseit, amíg a partíció fel nem oldódik. Ez biztosítja az adatok konzisztenciájának megőrzését.
Ezen automatikus feladatátvételi és kvórum alapú mechanizmusok kihasználásával a Redis Cluster magas szintű rendelkezésre állást és rugalmasságot tud biztosítani a csomóponti hibák és a hálózati partíciók esetén.
Idézetek:[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