Lūk, kā Redis Cluster apstrādā mezglu kļūmes:
Automātiskā kļūmjpārlēce
Ja Redis Cluster galvenais mezgls neizdodas, klasteris automātiski paaugstinās vienu no replikas mezgliem, lai šis galvenais mezgls kļūtu par jauno galveno mezglu. Šis kļūmjpārlēces process notiek automātiski bez manuālas iejaukšanās.
Kļūmjpārlēces procesa galvenie soļi ir:
1. Citi klastera mezgli konstatē, ka galvenais mezgls ir atteicies, izmantojot klastera tenku protokolu vai mēģinot izveidot savienojumu ar mezglu.
2. Pēc tam klasteris veic atlasi starp šī galvenā galvenā mezgla replikas mezgliem. Par jauno galveno tiek ievēlēta kopija ar visjaunākajiem datiem.
3. Ievēlētais reprodukcijas mezgls tiek paaugstināts par jauno galveno. Pēc tam pārējās kopijas tiek pārkonfigurētas, lai tās replicētu no jaunā galvenā.
4. Klienti tiek novirzīti uz jauno galveno mezglu, izmantojot kļūdas atbildi “MOVED”, kas satur jauno slot-to-mezglu kartēšanu.
Slotu pārklājums
Lai saglabātu pieejamību mezglu kļūmju laikā, Redis Cluster pieprasa, lai lielākā daļa galveno mezglu būtu pieejami un spēj sazināties. To sauc par "slotu pārklājuma" uzturēšanu.
Katrs klastera galvenais mezgls ir atbildīgs par 16 384 jaucējvietu apakškopu. Kamēr lielākā daļa galveno resursdatoru ir pieejami un var apkalpot tiem piešķirtās laika nišas, klasteris var turpināt darboties.
Ja pārāk daudz galveno mezglu neizdodas tā, ka atlikušie galvenie mezgli nevar aptvert visu jaukšanas slota diapazonu, klasteris kļūs nepieejams, līdz atkopsies vai tiks aizstāti neveiksmīgie mezgli.
Reprodukcijas veicināšana
Redis Cluster paļaujas uz reprodukcijas mezgliem, lai nodrošinātu augstu pieejamību. Ja galvenā ierīce neizdodas, viens no tā reprodukcijas mezgliem tiek automātiski paaugstināts par jauno galveno.
Par jauno galveno tiek ievēlēta kopija ar visjaunākajiem datiem. Tas nodrošina datu konsekvenci kļūmjpārlēces procesa laikā.
Apstrāde ar sadalītām smadzenēm
Redis Cluster izmanto uz kvorumu balstītu pieeju, lai apstrādātu tīkla nodalījumus un izvairītos no "smadzeņu sadalīšanas" scenārijiem, kad klasteris tiek sadalīts vairākos neatkarīgos klasteros.
Ja lielākā daļa meistaru kļūst nepieejami, atlikušie mezgli noraidīs klienta pieprasījumus, līdz nodalījums tiks atrisināts. Tas nodrošina datu konsekvences saglabāšanu.
Izmantojot šos automātiskos kļūmjpārlēces un kvoruma mehānismus, Redis Cluster spēj nodrošināt augstu pieejamību un noturību mezglu kļūmju un tīkla nodalījumu gadījumā.
Citāts:[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