Πώς να ρυθμίσετε ένα σύμπλεγμα Redis στο CentOS 8 - Μέρος 3


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

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

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

Σημαντικό: Το Redis Cluster έχει επίσης ορισμένους περιορισμούς, όπως η έλλειψη υποστήριξης για περιβάλλοντα NATted καθώς και εκείνα όπου οι διευθύνσεις IP ή οι θύρες TCP αντιστοιχίζονται εκ νέου για παράδειγμα στο Docker. Επιπλέον, δεν το υποστηρίζει κάθε βιβλιοθήκη πελάτη.

Αυτό το άρθρο δείχνει πώς μπορείτε να ρυθμίσετε ένα Cluster Redis (με Cluster-Mode απενεργοποιημένο) στο CentOS 8. Περιλαμβάνει πώς να εγκαταστήσετε το Redis, να ρυθμίσετε τους κόμβους συμπλέγματος, να δημιουργήσετε ένα σύμπλεγμα και να δοκιμάσετε την ανακατεύθυνση του συμπλέγματος.

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

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

  1. Διακομιστές με εγκατάσταση CentOS 8

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

Redis Master1: 10.42.0.247
Redis Master2: 10.42.0.197
Redis Master3: 10.42.0.132

Redis Slave1: 10.42.0.200
Redis Slave2: 10.42.0.21
Redis Slave3: 10.42.0.34

Η ρύθμισή μας έχει 3 κύριους κόμβους ανάγνωσης/εγγραφής και 3 κόμβους αντιγραφής μόνο για ανάγνωση, κάθε κύριος έχει ένα αντίγραφο, επομένως τρία θραύσματα περιέχουν όλα τα δεδομένα του συμπλέγματος σε κάθε κόμβο. Ένας πελάτης εφαρμογής API ή CLI μπορεί να γράψει μόνο στους κύριους κόμβους, αλλά να διαβάσει από οποιονδήποτε κόμβο στο σύμπλεγμα.

Βήμα 1: Εγκατάσταση του Redis σε όλους τους κόμβους

1. Συνδεθείτε σε όλες τις παρουσίες μέσω SSH και, στη συνέχεια, εκτελέστε την ακόλουθη εντολή για να εγκαταστήσετε τη λειτουργική μονάδα Redis χρησιμοποιώντας τη διαχείριση πακέτων DNF όπως φαίνεται.

dnf module install redis

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

systemctl start redis
systemctl enable redis
systemctl status redis

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

3. Αυτή η ενότητα περιγράφει τον τρόπο διαμόρφωσης των κόμβων συμπλέγματος Redis. Θυμηθείτε να εκτελέσετε τις διαμορφώσεις εδώ σε όλους τους κόμβους.

Χρησιμοποιήστε το αρχείο διαμόρφωσης /etc/redis.conf για να διαμορφώσετε τον διακομιστή Redis. Ως συνιστώμενη πρακτική, δημιουργήστε ένα αντίγραφο ασφαλείας του αρχικού αρχείου πριν το επεξεργαστείτε χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου γραμμής εντολών της επιλογής σας.

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

4. Στη συνέχεια, βρείτε τις ακόλουθες παραμέτρους διαμόρφωσης και επεξεργαστείτε τις τιμές τους όπως φαίνεται. Η παράμετρος bind ορίζει τη διεπαφή του διακομιστή Redis που θα ακούει, ορίζει την τιμή της στην στιγμιαία IP LAN. Καταργήστε το 127.0.0.1 γιατί συνειδητοποιήσαμε ότι αφήνοντάς το εκεί επιβραδύνει τη διαδικασία δημιουργίας συμπλέγματος, ιδιαίτερα το στάδιο ένταξης στο σύμπλεγμα.

bind  10.42.0.247

Στη συνέχεια, ορίστε το protected-mode σε no για να επιτρέψετε τις συνδέσεις από τις άλλες παρουσίες στο σύμπλεγμα.

protected-mode no

Η παράμετρος θύρας καθορίζει τη θύρα που θα ακούσει ο διακομιστής Redis για συνδέσεις, η προεπιλογή είναι 6379. Αυτή είναι η θύρα δεδομένων για την επικοινωνία με τους πελάτες.

port 6379

5. Το επόμενο σύνολο παραμέτρων θα ενεργοποιήσει τη λειτουργία συμπλέγματος και θα ορίσει ορισμένες από τις χρήσιμες λειτουργίες του. Η παράμετρος enabled-cluster, όταν έχει οριστεί σε yes, ενεργοποιεί τη λειτουργία συμπλέγματος.

cluster-enabled yes

Στη συνέχεια, η παράμετρος cluster-config-file ορίζει το όνομα του αρχείου διαμόρφωσης συμπλέγματος ενός κόμβου συμπλέγματος (π.χ. nodes-6379.conf). Το αρχείο δημιουργείται στον κατάλογο εργασίας (η προεπιλογή είναι /var/lib/redis ορίζεται χρησιμοποιώντας την παράμετρο dir) και δεν είναι επεξεργάσιμο από το χρήστη.

cluster-config-file nodes-6379.conf

Η επόμενη χρήσιμη επιλογή συμπλέγματος είναι το cluster-node-timeout, χρησιμοποιείται για να ορίσει το μέγιστο χρονικό διάστημα σε χιλιοστά του δευτερολέπτου που μπορεί να μην είναι διαθέσιμο μια παρουσία ώστε να θεωρείται σε κατάσταση αποτυχίας. Μια τιμή 15000 ισοδυναμεί με 15 δευτερόλεπτα.

cluster-node-timeout 15000

6. Πρέπει επίσης να ενεργοποιήσουμε την επιμονή Redis στο δίσκο. Μπορούμε να χρησιμοποιήσουμε μία από τις λειτουργίες επιμονής, δηλαδή το Append Only File (AOF): καταγράφει (στο αρχείο appendonly.aof που δημιουργήθηκε κάτω από τον κατάλογο εργασίας) κάθε λειτουργία εγγραφής ελήφθη με επιτυχία από τον διακομιστή. Τα δεδομένα θα αναπαραχθούν κατά την εκκίνηση του διακομιστή για την ανακατασκευή του αρχικού δεδομένων.

Για να το ενεργοποιήσετε, ορίστε την παράμετρο appendonly σε ναι.

appendonly yes

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

systemctl restart redis

8. Σε αυτό το σημείο, κάθε κόμβος συμπλέγματος θα πρέπει πλέον να έχει ένα ID. Μπορείτε να το ελέγξετε στο αρχείο καταγραφής που βρίσκεται στη διεύθυνση /var/log/redis/redis.log.

cat /var/log/redis/redis.log

9. Στη συνέχεια, ανοίξτε τις θύρες 6397 και 16379 σε όλες τις παρουσίες. Η τελευταία θύρα χρησιμοποιείται για το δίαυλο συμπλέγματος (ένα κανάλι επικοινωνίας κόμβος σε κόμβο που χρησιμοποιεί ένα δυαδικό πρωτόκολλο). Αυτή είναι μια βασική απαίτηση για τις συνδέσεις TCP συμπλέγματος Redis.

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

Βήμα 3: Δημιουργία του συμπλέγματος Redis

10. Για να δημιουργήσετε το σύμπλεγμα, χρησιμοποιήστε τον πελάτη redis-cli command-line ως εξής. Το --cluster create επιτρέπει τη δημιουργία συμπλέγματος και το --cluster-replicas 1 σημαίνει δημιουργία ενός αντιγράφου ανά κύριο.

Για το setup μας που έχει 6 κόμβους, θα έχουμε 3 masters και 3 slaves.

Σημειώστε ότι οι πρώτοι 6 κόμβοι θα θεωρηθούν κύριοι (M) και οι επόμενοι τρεις θα θεωρηθούν σκλάβοι (S). Ο πρώτος slave, δηλαδή 10.42.0.200:6379 αντιγράφει τον πρώτο κύριο, δηλαδή 10.42.0.247:6379, ο δεύτερος slave αντιγράφει τον δεύτερο κύριο, με αυτή τη σειρά.

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

redis-cli --cluster create 10.42.0.247:6379 10.42.0.197:6379 10.42.0.132:6379 10.42.0.200:6379 10.42.0.21:6379 10.42.0.34:6379 --cluster-replicas 1

11. Μόλις η δημιουργία συμπλέγματος είναι επιτυχής, εκτελέστε την ακόλουθη εντολή σε οποιονδήποτε κεντρικό υπολογιστή (καθορίστε τη διεύθυνση IP του χρησιμοποιώντας τη σημαία -h) για να παραθέσετε όλους τους κόμβους συμπλέγματος.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes

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

Τα διαφορετικά πεδία είναι με αυτή τη σειρά: αναγνωριστικό κόμβου, διεύθυνση IP: θύρα, σημαίες, τελευταία αποστολή ping, τελευταία λήψη πονγκ, εποχή διαμόρφωσης, κατάσταση σύνδεσης, υποδοχές (για κύριους).

Βήμα 4: Δοκιμή του Redis Cluster Failover

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

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Επίσης, σημειώστε τους σκλάβους Redis.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

13. Στη συνέχεια, ας διακόψουμε την υπηρεσία Redis σε έναν από τους κύριους κόμβους, π.χ. 10.42.0.197 και ας ελέγξουμε όλους τους κύριους κόμβους στο σύμπλεγμα.

systemctl stop redis
redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

Από το παρακάτω στιγμιότυπο οθόνης, μπορείτε να δείτε ότι ο κόμβος 10.42.0.197:6367 βρίσκεται σε κατάσταση αποτυχίας και ο εξαρτώμενος του 10.42.0.21:6379 έχει προωθηθεί σε κατάσταση κύριου.

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

systemctl start redis
redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

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

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

Βήμα 5: Δοκιμή αναπαραγωγής δεδομένων στο σύμπλεγμα Redis

15. Αυτή η τελευταία ενότητα εξηγεί πώς να επαληθεύσετε την αναπαραγωγή δεδομένων συμπλέγματος. Θα δημιουργήσουμε ένα κλειδί και μια τιμή σε ένα από τα κύρια και, στη συνέχεια, θα προσπαθήσουμε να το διαβάσουμε από όλους τους κόμβους συμπλέγματος ως εξής. Χρησιμοποιήστε το διακόπτη -c για να ενεργοποιήσετε την υποστήριξη συμπλέγματος στο βοηθητικό πρόγραμμα redis-cli και να αποκτήσετε πρόσβαση σε δεδομένα σε λειτουργία συμπλέγματος.

redis-cli -c -h 10.42.0.247 -p 6379 set name 'TecMint.com'
redis-cli -c -h 10.42.0.247 -p 6379 get name
redis-cli -c -h 10.42.0.21 -p 6379 get name
redis-cli -c -h 10.42.0.132 -p 6379 get name
redis-cli -c -h 10.42.0.200 -p 6379 get name
redis-cli -c -h 10.42.0.197 -p 6379 get name
redis-cli -c -h 10.42.0.34 -p 6379 get name

Το συμπέρασμα είναι ότι το Σύμπλεγμα Redis είναι ο προτιμώμενος τρόπος για να αποκτήσετε αυτόματη κοινή χρήση, αναπαραγωγή και υψηλή διαθεσιμότητα. Υπάρχουν πολλές άλλες καλά τεκμηριωμένες παράμετροι διαμόρφωσης στο υπόλοιπο αρχείο /etc/redis.conf, μπορείτε να βρείτε περισσότερες πληροφορίες στην επίσημη τεκμηρίωση: Εκμάθηση συμπλέγματος Redis και Προδιαγραφή συμπλέγματος Redis.

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