Πώς να ρυθμίσετε το Redis για υψηλή διαθεσιμότητα με το Sentinel στο CentOS 8 - Μέρος 2


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

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

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

Προαπαιτούμενο:

  1. Πώς να ρυθμίσετε την αναπαραγωγή Redis (με απενεργοποιημένη τη λειτουργία συμπλέγματος) στο CentOS 8 – Μέρος 1

Ρύθμιση περιβάλλοντος δοκιμής

Master Server and Sentinel1: 10.42.0.247
Redis Replica1 and Sentinel2: 10.42.0.21
Redis Replica2 and Sentinel3: 10.42.0.34

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

Βήμα 1: Εκκίνηση και ενεργοποίηση της υπηρεσίας Redis Sentinel Service

1. Στο CentOS 8, η υπηρεσία Redis Sentinel εγκαθίσταται παράλληλα με τον διακομιστή Redis (κάτι που κάναμε ήδη στο το Redis Replication Setup).

Για να ξεκινήσετε την υπηρεσία φρουρού Redis και να ενεργοποιήσετε την αυτόματη εκκίνηση κατά την εκκίνηση του συστήματος, χρησιμοποιήστε τις ακόλουθες εντολές systemctl. Επίσης, επιβεβαιώστε ότι είναι σε λειτουργία ελέγχοντας την κατάσταση του (κάντε αυτό σε όλους τους κόμβους):

systemctl start redis-sentinel
systemctl enable redis-sentinel
systemctl status redis-sentinel

Βήμα 2: Διαμόρφωση του Redis Sentinel σε όλους τους κόμβους Redis

2. Σε αυτήν την ενότητα, εξηγούμε πώς να ρυθμίσουμε το Sentinel σε όλους τους κόμβους μας. Η υπηρεσία Sentinel έχει παρόμοια μορφή διαμόρφωσης με τον διακομιστή Redis. Για να το διαμορφώσετε, χρησιμοποιήστε το αρχείο ρύθμισης παραμέτρων που έχει τεκμηριωθεί μόνος του /etc/redis-sentinel.conf.

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

cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig
vi /etc/redis-sentinel.conf

3. Από προεπιλογή, το Sentinel ακούει στη θύρα 26379, επαληθεύστε αυτό σε όλες τις παρουσίες. Λάβετε υπόψη ότι πρέπει να αφήσετε σχολιασμένη την παράμετρο bind (ή να ορίσετε σε 0.0.0.0).

port 26379

4. Στη συνέχεια, πείτε στον Sentinel να παρακολουθεί τον κύριο μας και να τον εξετάσει σε κατάσταση "Αντικειμενικά κάτω". μόνο εάν συμφωνούν τουλάχιστον 2 φρουροί απαρτίας. Μπορείτε να αντικαταστήσετε το "mymaster " με ένα προσαρμοσμένο όνομα.

#On Master Server and Sentinel1
sentinel monitor mymaster 127.0.0.1 6379 2

#On Replica1 and Sentinel2
sentinel monitor mymaster 10.42.0.247 6379 2

#On Replica1 and Sentinel3
sentinel monitor mymaster 10.42.0.247 6379 2

Σημαντικό: Η δήλωση παρακολούθησης φρουρού ΠΡΕΠΕΙ να τοποθετηθεί πριν από τη δήλωση auth-pass φρουρού για να αποφευχθεί το σφάλμα "Δεν υπάρχει τέτοια κύρια μονάδα με το καθορισμένο όνομα. ” κατά την επανεκκίνηση της υπηρεσίας φρουρού.

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

 
sentinel auth-pass mymaster Securep@55Here

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

Η ακόλουθη διαμόρφωση σημαίνει ότι ο κύριος θα θεωρηθεί ότι αποτυγχάνει μόλις δεν λάβουμε καμία απάντηση από τα ping μας εντός 5 δευτερολέπτων (1 δευτερόλεπτο ισοδυναμεί με 1000 χιλιοστά του δευτερολέπτου).

sentinel down-after-milliseconds mymaster 5000

7. Στη συνέχεια, ορίστε το χρονικό όριο ανακατεύθυνσης σε χιλιοστά του δευτερολέπτου που καθορίζει πολλά πράγματα (διαβάστε την τεκμηρίωση της παραμέτρου στο αρχείο διαμόρφωσης).

sentinel failover-timeout mymaster 180000

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

sentinel parallel-syncs mymaster 1

Λάβετε υπόψη ότι τα αρχεία διαμόρφωσης στα Redis Replica1 και Sentinel2 και Reddis Replica1 και Sentinel2 θα πρέπει να είναι πανομοιότυπα.

9. Στη συνέχεια, επανεκκινήστε τις υπηρεσίες Sentinel σε όλους τους κόμβους για να εφαρμόσετε τις πρόσφατες αλλαγές.

systemctl restart redis-sentinel

10. Στη συνέχεια, ανοίξτε τη θύρα 26379 στο τείχος προστασίας σε όλους τους κόμβους για να επιτρέψετε στις παρουσίες Sentinel να αρχίσουν να μιλάνε, να λαμβάνουν συνδέσεις από τους άλλους Sentinel, χρησιμοποιώντας το τείχος προστασίας-cmd.

firewall-cmd --zone=public --permanent --add-port=26379/tcp
firewall-cmd --reload

11. Όλα τα αντίγραφα θα ανακαλυφθούν αυτόματα. Είναι σημαντικό ότι το Sentinel θα ενημερώσει τη διαμόρφωση αυτόματα με πρόσθετες πληροφορίες σχετικά με τα αντίγραφα. Μπορείτε να το επιβεβαιώσετε ανοίγοντας το αρχείο ρύθμισης παραμέτρων Sentinel για κάθε παρουσία και κοιτάξτε το.

Για παράδειγμα, όταν κοιτάζετε το τέλος του αρχείου διαμόρφωσης του πλοιάρχου, θα πρέπει να δείτε τις δηλώσεις known-sentinels και known-replica όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

Θα πρέπει να είναι η ίδια περίπτωση για τα replica1 και replica2.

Λάβετε υπόψη ότι η ρύθμιση παραμέτρων Sentinel ξαναγράφεται/ενημερώνεται επίσης κάθε φορά που ένα αντίγραφο προωθείται σε κατάσταση κύριας κατά τη διάρκεια μιας ανακατεύθυνσης και κάθε φορά που ανακαλύπτεται νέος Sentinel στη ρύθμιση.

Βήμα 3: Ελέγξτε την κατάσταση εγκατάστασης του Redis Sentinel

12. Τώρα ελέγξτε την κατάσταση/πληροφορίες Sentinel στο master, χρησιμοποιώντας την εντολή info sentinel ως εξής.

redis-cli -p 26379 info sentinel

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

13. Για να εμφανίσετε λεπτομερείς πληροφορίες σχετικά με τον κύριο (που ονομάζεται mymaster), χρησιμοποιήστε την εντολή κύριος φρουρός.

redis-cli -p 26379 sentinel master mymaster

14. Για να εμφανίσετε λεπτομερείς πληροφορίες σχετικά με τους slaves και τους sentinel, χρησιμοποιήστε την εντολή sentinel slaves και sentinel εντολή sentinelαντίστοιχα.

redis-cli -p 26379 sentinel slaves mymaster
redis-cli -p 26379 sentinel sentinels mymaster

15. Στη συνέχεια, ζητήστε τη διεύθυνση του πλοιάρχου ονομαστικά από τις υποτελείς παρουσίες χρησιμοποιώντας την εντολή sentinel get-master-addr-by-name ως εξής.

Η έξοδος πρέπει να είναι η διεύθυνση IP και η θύρα της τρέχουσας κύριας παρουσίας:

redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Βήμα 4: Δοκιμάστε το Sentinel Failover

16. Τέλος, ας δοκιμάσουμε την αυτόματη ανακατεύθυνση στη ρύθμιση Sentinel. Στην κύρια μονάδα Redis/Sentinel, κάντε την κύρια μονάδα Redis (εκτελείται στη θύρα 6379) σε αδράνεια για 60 δευτερόλεπτα . Στη συνέχεια, ζητήστε τη διεύθυνση του τρέχοντος πλοιάρχου στα αντίγραφα/σκλάβοι ως εξής.

redis-cli -p 6379
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379>  debug sleep 60
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Από την έξοδο για το ερώτημα, το νέο κύριο είναι πλέον replica/slave2 με διεύθυνση IP 10.42.0.34 όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

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

Στο επόμενο και τελευταίο μέρος αυτής της σειράς, θα δούμε πώς να ρυθμίσετε ένα Redis Cluster στο CentOS 8. Θα είναι ένα ανεξάρτητο άρθρο από τα δύο πρώτα.