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


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

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

Υποστηρίζει ευέλικτες δομές δεδομένων, ασύγχρονη αναπαραγωγή master-slave για κλιμάκωση της απόδοσης ανάγνωσης και προστασία από απώλεια δεδομένων, κοινή χρήση από την πλευρά του πελάτη για την κλίμακα απόδοσης εγγραφής, δύο μορφές εμμονής για εγγραφή δεδομένων στη μνήμη σε δίσκο σε συμπαγή μορφή, ομαδοποίηση και διαμέριση. Διαθέτει επίσης αυτόματα failovers για ανάπτυξη υψηλής διαθεσιμότητας μέσω Redis Sentinel, Lua scripting, συναλλαγών και πολλών άλλων.

Ως βάση δεδομένων ΧΩΡΙΣ SQL ή μη σχεσιακή, το Redis προσφέρει ορισμένα πλεονεκτήματα απόδοσης σε σχέση με τα παραδοσιακά συστήματα βάσεων δεδομένων (όπως MySQL/MariaDB, PostgreSQL, κ.λπ.), επειδή όλα τα δεδομένα του βρίσκονται ή αποθηκεύονται στη μνήμη καθιστώντας τα εύκολα προσβάσιμα σε μια εφαρμογή, ενώ οι παραδοσιακές βάσεις δεδομένων πρέπει να εγγράψουν ή να διαβάσουν όλα τα δεδομένα σε δίσκο ή εξωτερική πηγή.

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

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

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

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

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

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

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

Redis Master Server: 10.42.0.247
Redis Replica1/Slave1: 10.42.0.21
Redis Replica2/Slave2: 10.42.0.34

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

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

Βήμα 1: Εγκατάσταση του Redis στο CentOS 8

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


dnf install @redis

2. Με την ολοκλήρωση της εγκατάστασης του πακέτου Redis, ξεκινήστε την υπηρεσία Redis, ενεργοποιήστε την να ξεκινά αυτόματα σε κάθε εκκίνηση του συστήματος και ελέγξτε εάν είναι σε λειτουργία ως εξής.

systemctl start redis
systemctl enable redis
systemctl status redis

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

ss -ltpn | grep redis-server

Βήμα 2: Διαμόρφωση κύριου διακομιστή Redis

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

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

5. Από προεπιλογή, μια παρουσία Redis έχει ρυθμιστεί ώστε να ακούει και να δέχεται συνδέσεις στη διεπαφή loopback, χρησιμοποιώντας την οδηγία bind. Για να επικοινωνήσει με τα αντίγραφα, το master θα πρέπει να ρυθμιστεί ώστε να ακούει τη διεύθυνση loopback IPv4 και τη διεύθυνση IP του LAN, π.χ. 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Στη συνέχεια, ορίστε την παράμετρο προστατευμένης λειτουργίας σε no για να επιτρέψετε την επικοινωνία με τα αντίγραφα όπως φαίνεται.

protected-mode no

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

port 6379

7. Για να ασφαλίσουμε προαιρετικά τις επικοινωνίες master-replica, μπορούμε να προστατεύσουμε τον κύριο χρησιμοποιώντας την οδηγία requirepass, έτσι ώστε οι πελάτες/αντίγραφα πρέπει να εκδώστε έναν κωδικό πρόσβασης ελέγχου ταυτότητας πριν εκτελέσετε οποιεσδήποτε εντολές ή ξεκινήσετε μια διαδικασία συγχρονισμού αναπαραγωγής, διαφορετικά ο κύριος θα αρνηθεί το αίτημα πελάτη/αντίγραφο (θυμηθείτε να ορίσετε έναν ασφαλή κωδικό πρόσβασης).

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

requirepass  Securep@55Here

8. Επίσης, τα αρχεία καταγραφής Redis αποθηκεύονται στο αρχείο /var/log/redis/redis.log, αυτό ορίζεται χρησιμοποιώντας την οδηγία logfile και το προεπιλεγμένο επίπεδο πολυγλωσσίας διακομιστή είναι σημείωση, που ορίζεται χρησιμοποιώντας την παράμετρο loglevel.

loglevel  notice
logfile  /var/log/redis/redis.log

9. Εφόσον το systemd είναι ο προεπιλεγμένος διαχειριστής συστήματος και υπηρεσιών στο CentOS 8, μπορείτε να διαμορφώσετε το Redis ώστε να αλληλεπιδρά με το δέντρο εποπτείας systemd ορίζοντας την παράμετρο εποπτευόμενο σε systemd.

supervised systemd

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

systemctl daemon-reload
systemctl restart redis

11. Για να αποκτήσουμε πρόσβαση στον διακομιστή Redis, πρέπει να χρησιμοποιήσουμε το redis-cli (μια διεπαφή γραμμής εντολών για τον διακομιστή redis). Από προεπιλογή, συνδέεται με τον διακομιστή στον localhost (στη θύρα 127.0.0.1 6379). Σημειώστε ότι επειδή ο διακομιστής είναι ασφαλής από πελάτες που χρησιμοποιούν κωδικό πρόσβασης, η εκτέλεση μιας εντολής πριν από τον έλεγχο ταυτότητας θα πρέπει να αποτύχει.

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

redis-cli
127.0.0.1:6379> client list
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> client list

12. Για να συνδεθείτε σε ένα αντίγραφο (αφού τα διαμορφώσετε όπως περιγράφεται στην επόμενη ενότητα), χρησιμοποιήστε τα -h και -p Επιλογές για να καθορίσετε τη διεύθυνση IP του αντιγράφου/όνομα κεντρικού υπολογιστή και τη θύρα αντίστοιχα (όχι αυτή η θύρα 6379 πρέπει να είναι ανοιχτή στο τείχος προστασίας του αντιγράφου).

redis-cli -h 10.42.0.21 -p 6379

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

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

Βήμα 3: Διαμόρφωση διακομιστών Redis Replica/Slave

14. Για να ορίσετε γρήγορα μια παρουσία Redis ως αντίγραφο εν κινήσει, χρησιμοποιήστε το βοηθητικό πρόγραμμα redis-cli και καλέστε το REPLICAOF εντολή όπως φαίνεται.

redis-cli replicaof 10.42.0.247 6379
OR
redis-cli
127.0.0.1:6379> REPLICAOF 10.42.0.247 6379

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

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

16. Για να επιτρέψετε στους πελάτες να συνδεθούν με το αντίγραφο για να διαβάσουν δεδομένα, προσθέστε τη διεύθυνση IP του αντιγράφου στην οδηγία bind.

replica1
bind 127.0.0.1 10.42.0.21

replica2
bind 127.0.0.1 10.42.0.34

Ορισμός παρουσίας Redis ως αντίγραφο

17. Για να διαμορφώσετε μια παρουσία Redis ως αντίγραφο, χρησιμοποιήστε την παράμετρο replicaof και ορίστε τη διεύθυνση IP (ή το όνομα κεντρικού υπολογιστή) του κύριου κόμβου και τη θύρα ως αξίες.

replicaof 10.42.0.247 6379

Ρύθμιση του Replica σε Έλεγχος ταυτότητας στο Master

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

masterauth Securep@55Here

19. Επιπλέον, όταν ένα αντίγραφο χάνει τη σύνδεσή του με το κύριο ή όταν η αναπαραγωγή βρίσκεται σε εξέλιξη, το αντίγραφο διαμορφώνεται για να απαντά σε αιτήματα πελατών, πιθανώς με "παλαιωμένη ” δεδομένα. Αλλά εάν πρόκειται για τον πρώτο συγχρονισμό, τότε το σύνολο δεδομένων μπορεί απλώς να είναι κενό. Αυτή η συμπεριφορά ελέγχεται από την παράμετρο replica-serve-stale-data.

Και, καθώς τα αντίγραφα Redis 2.6 από προεπιλογή είναι μόνο για ανάγνωση, αυτό ελέγχεται από την παράμετρο replica-read-only. Μπορείτε να κάνετε άλλες προσαρμογές στη διαμόρφωση των αντιγράφων που ταιριάζουν στις ανάγκες της εφαρμογής σας.

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

systemctl restart redis

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

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

Βήμα 4: Ελέγξτε την κατάσταση αντιγραφής Master-replica

22. Μόλις ολοκληρωθεί η ρύθμιση παραμέτρων αναπαραγωγής master-replica, μπορούμε να ελέγξουμε εάν η ρύθμιση λειτουργεί σωστά ως εξής.

Στο κύριο, εκτελέστε τις ακόλουθες εντολές.

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> info replication

23. Επίσης, ελέγξτε την κατάσταση αναπαραγωγής στα αντίγραφα/σκλάβους ως εξής.

redis-cli
127.0.0.1:6379> info replication

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

Στον κύριο, κάντε αυτό:

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> set domain 'linux-console.net'

24. Στη συνέχεια, ελέγξτε εάν τα δεδομένα έχουν συγχρονιστεί με τα αντίγραφα όπως φαίνεται.

redis-cli
127.0.0.1:6379> get domain

Προστασία του Master Instance από τον κίνδυνο απώλειας ορισμένων εγγραφών

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

Αυτό σημαίνει ότι ένας κύριος μπορεί να σταματήσει να δέχεται εγγραφές εάν υπάρχουν λιγότερα από N αντίγραφα συνδεδεμένα, με καθυστέρηση μικρότερη ή ίση από M δευτερόλεπτα, όπως ελέγχεται από τα min Επιλογές -replicas-to-write και min-replicas-max-lag αντίστοιχα.

Για να τα ορίσετε, αφαιρέστε τα σχόλια και ορίστε τις τιμές σύμφωνα με τις απαιτήσεις ρύθμισης στο /etc/redis.conf, όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης. Αυτή η διαμόρφωση σημαίνει ότι, από το τελευταίο ping έως τα αντίγραφα, μετά από 10 δευτερόλεπτα, εάν υπάρχουν λιγότερα από 2 αντίγραφα στο διαδίκτυο, ο κύριος θα σταματήσει να δέχεται εγγραφές.

min-replicas-to-write 2
min-replicas-max-lag 10

Μπορείτε να βρείτε περισσότερες επιλογές στο υπόλοιπο αρχείο διαμόρφωσης /etc/redis.conf και για περισσότερες λεπτομέρειες διαβάστε σχετικά με την αναπαραγωγή στην τεκμηρίωση του Redis.

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