Redis Sentinel

Redis Sentinel



Υποθέστε ένα σενάριο όπου έχετε μόνο ένα παράδειγμα Redis στην παραγωγή σας και αποτυγχάνει κάποια στιγμή για κάποιο λόγο. Η εφαρμογή σας αποθηκεύει προσωρινά δεδομένα στο χώρο αποθήκευσης δεδομένων Redis και τώρα η μοναδική σας πηγή δεδομένων είναι νεκρή. Ένας τρόπος για να ελέγξετε αυτά τα είδη σεναρίων είναι να διατηρήσετε την αρχιτεκτονική master-slave όπου οι slaves μπορούν να αναπαράγουν τον κύριο κόμβο μέχρι να επιστρέψει. Τα συμπλέγματα Redis υποστηρίζουν υψηλή διαθεσιμότητα έως κάποιο βαθμό με την προσέγγιση master-replica. Το Redis Sentinel είναι μια άλλη προσέγγιση που παρέχει έναν πιο αξιόπιστο τρόπο διατήρησης της υψηλής διαθεσιμότητας των παρουσιών Redis. Παρακολουθεί τον κύριο κόμβο Redis για αποτυχίες και ενεργοποιεί αμέσως τη διαδικασία ανακατεύθυνσης, η οποία θα προωθήσει έναν υπάρχοντα υποτελή κόμβο σε έναν ολοκαίνουργιο κύριο.







Επιπλέον, το Redis sentinel λειτουργεί ως μεσάζων όπου οι πελάτες συνδέονται και ζητούν την πιο πρόσφατη διεύθυνση IP του κύριου κόμβου. Έτσι, ο συνδεδεμένος φρουρός παρέχει τη διεύθυνση του κύριου κόμβου αμέσως.



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



Η συμφωνία των φρουρών βασίζεται σε μια τιμή απαρτίας η οποία θα συζητηθεί στην επόμενη ενότητα.





Των οποίων η αξία

Η τιμή Quorum είναι ο μέγιστος αριθμός φρουρών που πρέπει να συμφωνηθούν όταν ο κύριος κόμβος είναι εκτός λειτουργίας. Αυτή η τιμή χρησιμοποιείται μόνο για τον εντοπισμό αποτυχίας στον κύριο κόμβο. Η διαδικασία ανακατεύθυνσης ξεκινά με την εξουσιοδότηση πολλαπλών διαθέσιμων κόμβων φρουρού για να προχωρήσουν με έναν επιλεγμένο φρουρό ως οδηγό.

Χαρακτηριστικά του Redis Sentinel

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



  • Το Sentinel παρακολουθεί συνεχώς την κατάσταση των κόμβων κύριου και υποτελούς στο σύστημά σας Redis.
  • Κάθε φορά που υπάρχει αποτυχία ή κάτι δεν πάει καλά με τις παρουσίες σας Redis, ο φρουρός έχει τη δυνατότητα να ειδοποιεί τον διαχειριστή ή τις συνδεδεμένες εφαρμογές χρησιμοποιώντας το Sentinel API.
  • Η φάση του failover κατευθύνεται από τον φρουρό προωθώντας ένα αντίγραφο ως νέο κύριο. Τα υπόλοιπα αντίγραφα έχουν ρυθμιστεί για χρήση του νέου κύριου. Τέλος, οι αντίστοιχοι πελάτες θα ειδοποιηθούν για τη διεύθυνση του νέου κύριου κόμβου.
  • Επίσης, ο φρουρός Redis είναι ένας πάροχος διαμόρφωσης για τους συνδεδεμένους πελάτες όπου οι πελάτες μπορούν να ζητήσουν τη διεύθυνση της τρέχουσας διαθέσιμης κύριας παρουσίας και εάν συμβεί ξαφνική κατάρρευση, ο φρουρός δεσμεύεται να προωθήσει αμέσως τη διεύθυνση του νέου κύριου κόμβου.

Στην επόμενη ενότητα, θα διαμορφώσουμε τους φρουρούς Redis με στιγμιότυπα master-replica και θα χρησιμοποιήσουμε το API φρουρού για την παρακολούθηση των κόμβων.

Διαμόρφωση Sentinel

Αρχικά, δημιουργούμε δύο περιπτώσεις Redis στις θύρες 7000 και 7001. Η θύρα 7000 θα είναι ο κύριος κόμβος και η άλλη θα αναπαράγει την κύρια. Και οι δύο περιπτώσεις χρησιμοποιούν τα ακόλουθα αρχεία ρυθμίσεων αντίστοιχα:

Διαμόρφωση κύριου κόμβου

Λιμάνι 7000
με δυνατότητα συμπλέγματος αρ
cluster-config-file nodes.conf
cluster-node-timeout 5000
παράρτημα Ναί

Διαμόρφωση Slave Node

Λιμάνι 7001
με δυνατότητα συμπλέγματος αρ
cluster-config-file nodes.conf
cluster-node-timeout 5000
παράρτημα Ναί

Και οι δύο περιπτώσεις θα ξεκινήσουν παρέχοντας το αρχείο ρυθμίσεων που σχετίζεται με την καθεμία. Μπορούμε να χρησιμοποιήσουμε την ακόλουθη εντολή για να ξεκινήσουμε ξεχωριστά τις παρουσίες Redis:

redis-server redis.conf

Ας συνδεθούμε στην παρουσία Redis που ξεκίνησε στη θύρα 7001 ως εξής:

redis-cli 7001

Τώρα, μπορούμε να κάνουμε αυτό το παράδειγμα ένα αντίγραφο του master που εκτελείται στη θύρα 7000. Η εντολή REPLICAOF μπορεί να χρησιμοποιηθεί ως εξής:

αντίγραφο του 127.0.0.1 7000

Όπως ήταν αναμενόμενο, η παρουσία που εκτελείται στη θύρα 7001 έγινε ο κόμβος αντιγραφής του κύριου που εκτελείται στη θύρα 7000.

Τώρα, είμαστε έτοιμοι να διαμορφώσουμε τρεις φρουρούς Redis για την παρακολούθηση της παραπάνω κύριας παρουσίας. Χρειάζεται να έχουμε τρία αρχεία διαμόρφωσης για να δημιουργήσουμε τρεις παρουσίες φρουρού στις θύρες 5000, 5001 και 5002 όπως φαίνεται παρακάτω.

Καθε φρουρός.conf το αρχείο μοιάζει με το ακόλουθο, εκτός από το ότι ο αριθμός θύρας θα αλλάξει:

Λιμάνι 5000
masternode παρακολούθησης φρουρού 127.0.0.1 7000 δύο
κύριος κόμβος φρουρού κάτω μετά από χιλιοστά του δευτερολέπτου 5000
κύριος κόμβος αποτυχίας-χρονικού ορίου φρουρού 60000

Τώρα, ήρθε η ώρα να τρέξετε τους τρεις φρουρούς. Μπορείτε να χρησιμοποιήσετε το εκτελέσιμο αρχείο redis-sentinel μαζί με τη διαδρομή προς φρουρός.conf αρχείο ρυθμίσεων για τη δημιουργία μιας παρουσίας φρουρού. Διαφορετικά, μπορούμε ακόμα να καλέσουμε τον διακομιστή redis-executable καθορίζοντας τη διαδρομή προς φρουρός.conf και η σημαία -φρουρός .

Ας ξεκινήσουμε κάθε φρουρό χρησιμοποιώντας την ακόλουθη εντολή:

redis-server sentinel.conf --φρουρός

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

Τώρα, η ρύθμιση του Redis sentinel είναι σε λειτουργία και λειτουργεί όπως φαίνεται στην παρακάτω εικόνα:

Στην επόμενη ενότητα, θα διερευνήσουμε περισσότερα σχετικά με το Sentinel API και πώς μπορούμε να το χρησιμοποιήσουμε για να ανακτήσουμε πληροφορίες που σχετίζονται με τον κύριο κόμβο Redis.

Sentinel API

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

  • Ελέγξτε την κατάσταση των παρακολουθούμενων παρουσιών κύριου και υποτελούς Redis
  • Λεπτομέρειες για άλλους φρουρούς
  • Λάβετε ειδοποιήσεις τύπου push από φρουρούς σε περίπτωση failover

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

Ελέγξτε την κατάσταση του κύριου κόμβου

Είναι πολύ σημαντικό να παρακολουθείτε ή να ελέγχετε την υγεία του κύριου κόμβου από καιρό σε καιρό. Η ακόλουθη εντολή API φρουρού μπορεί να χρησιμοποιηθεί για την ανάκτηση βασικών λεπτομερειών:

ΣΕΝΤΙΝΕΛ ΜΑΣΤΕΡ < monitored_master_name >

monitored_master_name: Το όνομα του κύριου κόμβου που καθορίζεται στο αρχείο διαμόρφωσης φρουρού που δημιουργήσαμε στο προηγούμενο βήμα.

Ας χρησιμοποιήσουμε αυτήν την εντολή για να υποβάλουμε ερώτημα για την κατάσταση κύριας στις ρυθμίσεις μας. Στην περίπτωσή μας, το όνομα του κύριου κόμβου είναι 'masterode'.

Κύριος κόμβος SENTINEL MASTER

Έχουν ανακτηθεί αρκετές πληροφορίες και μερικές από αυτές είναι σημαντικές, όπως num-slaves, flags και num-other-sentinels.

ο σημαίες ιδιοκτησία έχει οριστεί σε κύριος που σημαίνει ότι ο πλοίαρχος είναι καλά στην υγεία του. Κάθε φορά που ο κύριος κόμβος είναι εκτός λειτουργίας, το s_down ή o_down θα εμφανιστεί η σημαία. Η ιδιοκτησία αριθμός-άλλοι-φρουροί έχει οριστεί σε 2 που σημαίνει ότι ο φρουρός Redis έχει ήδη αναγνωρίσει τους άλλους δύο φρουρούς για τον κύριο κόμβο. Επιπλέον, το νούμε-σκλάβοι Η ιδιότητα εμφανίζει τα διαθέσιμα αντίγραφα για τον κύριο κόμβο. Σε αυτήν την περίπτωση, έχει οριστεί σε 1 αφού έχουμε μόνο ένα αντίγραφο.

Λάβετε πληροφορίες σχετικά με τα συνδεδεμένα αντίγραφα

Μπορούμε να ελέγξουμε τα αντίγραφα που συνδέονται με τον κύριο κόμβο χρησιμοποιώντας την ακόλουθη δευτερεύουσα εντολή SENTINEL:

ΡΕΠΛΙΚΕΣ SENTINEL < monitored_master_name >

Σε αυτό το παράδειγμα, το κύριο όνομα είναι 'masterode'.

Κύριος κόμβος αντιγράφων SENTINEL

Όπως ήταν αναμενόμενο, ο Sentinel εντόπισε τον υποτελή κόμβο που εκτελείται στη θύρα 7001.

Λάβετε πληροφορίες σχετικά με τους Associated Sentinels

Ομοίως, μπορούμε να ρωτήσουμε τις λεπτομέρειες που σχετίζονται με άλλους φρουρούς που σχετίζονται με τον τρέχοντα κύριο κόμβο χρησιμοποιώντας την ακόλουθη υποεντολή SENTINEL:

SENTINEL SENTINELS < master_node_name >

Σε αυτήν την περίπτωση, θα λάβουμε τις πληροφορίες που σχετίζονται με τον κύριο κόμβο που ονομάζεται 'masterode'.

Κύριος κόμβος φρουρών SENTINEL

Λάβετε τη διεύθυνση του κύριου κόμβου

Όπως αναφέρθηκε στην προηγούμενη ενότητα, το Redis sentinel είναι ένας πάροχος διαμόρφωσης για συνδεδεμένους πελάτες. Έτσι, είναι σε θέση να παρέχει τη διεύθυνση IP και τη θύρα του κύριου κόμβου που τρέχει στους πελάτες που ζητήθηκαν. Η ακόλουθη υποεντολή Sentinel API μπορεί να χρησιμοποιηθεί για την ανάκτηση των αναφερόμενων πληροφοριών.

SENTINEL GET-MASTER-ADDR-BY-NAME < master_node_name >

Ας εκτελέσουμε την παραπάνω εντολή για το σενάριο μας ως εξής:

φρουρός get-master-addr-by-name masternode

Συζητήσαμε μόνο μερικές εντολές API φρουρού. Πολλές άλλες υποεντολές είναι διαθέσιμες, όπως το sentinel-failover, το sentinel info-cache, το sentinel masters, κ.λπ. Επιπλέον, πολλές εντολές είναι διαθέσιμες για χρήση και για σκοπούς διαχείρισης. Στην επόμενη ενότητα, θα επικεντρωθούμε στη διαδικασία ανακατεύθυνσης φρουρού Redis.

Sentinel Failover Process

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

εντοπισμός σφαλμάτων ύπνος 300

Ο κύριος κόμβος που εκτελείται στη θύρα 7000 θα πρέπει να μην είναι προσβάσιμος τώρα. Έτσι, οι συσχετισμένοι φρουροί θα παρατηρήσουν ότι ο κύριος δεν είναι διαθέσιμος με το +sdown Εκδήλωση. Στη συνέχεια, αυτό θα ρυθμιστεί σε +odown όπου 2 φρουροί επιβεβαιώνουν ότι ο κύριος κόμβος είναι κάτω σύμφωνα με την τιμή απαρτίας. Τέλος, θα ξεκινήσει η φάση του failover και ιδανικά το αντίγραφο θα πρέπει να προωθηθεί στο νέο master.

Ας ελέγξουμε ξανά τη διεύθυνση IP του κύριου κόμβου και τη θύρα.

φρουρός get-master-addr-by-name masternode

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

συμπέρασμα

Το Redis sentinel είναι η πιο αξιόπιστη προσέγγιση για τη διασφάλιση της υψηλής διαθεσιμότητας μιας δεδομένης κύριας παρουσίας Redis. Ένας φρουρός είναι ικανός να παρακολουθεί, να ειδοποιεί και να εκκινεί αυτόματο failover χωρίς ανθρώπινη παρέμβαση. Επίσης, πολλοί φρουροί μαζί συμφωνούν για το γεγονός ότι ο κύριος κόμβος δεν είναι προσβάσιμος και η τιμή απαρτίας χρησιμοποιείται ως ο μέγιστος αριθμός φρουρών που πρέπει να συμφωνηθούν κατά τον έλεγχο της διαθεσιμότητας της κύριας παρουσίας. Το Redis sentinel προσφέρει ένα εύχρηστο API για την ανάκτηση πληροφοριών σχετικά με την υγεία του κύριου κόμβου και των σχετικών αντιγράφων, καθώς και την εκτέλεση διοικητικών εργασιών.