Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Πώς χειρίζεται το Redis Cluster τις αποτυχίες κόμβων


Πώς χειρίζεται το Redis Cluster τις αποτυχίες κόμβων


Δείτε πώς το Redis Cluster χειρίζεται τις αποτυχίες κόμβων:

Αυτόματο Failover

Όταν ένας κύριος κόμβος Redis Cluster αποτυγχάνει, το σύμπλεγμα θα προωθήσει αυτόματα έναν από τους κόμβους αντιγραφής για να γίνει ο κύριος κόμβος. Αυτή η διαδικασία ανακατεύθυνσης γίνεται αυτόματα χωρίς καμία χειροκίνητη παρέμβαση.

Τα βασικά βήματα στη διαδικασία failover είναι:

1. Οι άλλοι κόμβοι στο σύμπλεγμα ανιχνεύουν ότι ο κύριος κόμβος έχει αποτύχει, είτε μέσω του πρωτοκόλλου κουτσομπολιού συμπλέγματος είτε επιχειρώντας να συνδεθεί με τον κόμβο.

2. Στη συνέχεια, το σύμπλεγμα πραγματοποιεί μια επιλογή μεταξύ των κόμβων αντιγράφου για αυτόν τον κύριο. Το αντίγραφο με τα πιο ενημερωμένα δεδομένα εκλέγεται ως νέο κύριο.

3. Ο εκλεγμένος κόμβος αντιγράφου προωθείται για να γίνει ο νέος κύριος. Στη συνέχεια, τα άλλα αντίγραφα διαμορφώνονται εκ νέου για αναπαραγωγή από το νέο κύριο.

4. Οι πελάτες ανακατευθύνονται στον νέο κύριο κόμβο χρησιμοποιώντας την απόκριση σφάλματος «MOVED», η οποία περιέχει τη νέα αντιστοίχιση θυρίδας σε κόμβο.

Κάλυψη κουλοχέρη

Για να παραμείνει διαθέσιμος κατά τη διάρκεια αποτυχιών κόμβου, το Redis Cluster απαιτεί η πλειονότητα των κύριων κόμβων να είναι διαθέσιμοι και ικανοί να επικοινωνούν. Αυτό είναι γνωστό ως διατήρηση "κάλυψης κουλοχέρηδων".

Κάθε κύριος κόμβος στο σύμπλεγμα είναι υπεύθυνος για ένα υποσύνολο των 16.384 θυρίδων κατακερματισμού. Εφόσον η πλειονότητα των masters είναι διαθέσιμα και μπορούν να εξυπηρετήσουν τις θέσεις που τους έχουν εκχωρηθεί, το σύμπλεγμα μπορεί να συνεχίσει να λειτουργεί.

Εάν αποτύχουν πάρα πολλοί κύριοι κόμβοι, έτσι ώστε οι υπόλοιποι κύριοι κόμβοι να μην μπορούν να καλύψουν το πλήρες εύρος υποδοχής κατακερματισμού, το σύμπλεγμα δεν θα είναι διαθέσιμο έως ότου οι αποτυχημένοι κόμβοι αποκατασταθούν ή αντικατασταθούν.

Προώθηση αντιγράφου

Το Redis Cluster βασίζεται σε κόμβους αντιγραφής για να παρέχει υψηλή διαθεσιμότητα. Όταν ένας κύριος αποτυγχάνει, ένας από τους κόμβους αντιγράφου του προωθείται αυτόματα για να γίνει ο νέος κύριος.

Το αντίγραφο με τα πιο ενημερωμένα δεδομένα εκλέγεται ως νέο κύριο. Αυτό διασφαλίζει τη διατήρηση της συνέπειας των δεδομένων κατά τη διαδικασία ανακατεύθυνσης.

Χειρισμός Split-Brain

Το Redis Cluster χρησιμοποιεί μια προσέγγιση που βασίζεται στην απαρτία για να χειριστεί τα διαμερίσματα του δικτύου και να αποφύγει σενάρια "split-brain" όπου το σύμπλεγμα χωρίζεται σε πολλαπλά ανεξάρτητα συμπλέγματα.

Εάν η πλειονότητα των κύριων κόμβων δεν είναι διαθέσιμη, οι υπόλοιποι κόμβοι θα απορρίψουν αιτήματα πελάτη μέχρι να επιλυθεί το διαμέρισμα. Αυτό διασφαλίζει τη διατήρηση της συνέπειας των δεδομένων.

Αξιοποιώντας αυτούς τους μηχανισμούς αυτόματης ανακατεύθυνσης και απαρτίας, το Redis Cluster είναι σε θέση να παρέχει υψηλή διαθεσιμότητα και ανθεκτικότητα σε περίπτωση αστοχιών κόμβων και κατατμήσεων δικτύου.

Αναφορές:
[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