Com configurar la replicació de Redis (amb el mode de clúster desactivat) a CentOS 8 - Part 1


Redis (Servidor de diccionaris remots) és un servidor d'estructura de dades/base de dades de valors clau en memòria ràpid, distribuït i eficient de codi obert molt popular i àmpliament utilitzat.

Ofereix un conjunt ric de funcions que el fan eficaç per a una àmplia gamma de casos d'ús: com a base de dades, capa de memòria cau, intermediari de missatges o cua; aplicable a aplicacions web, aplicacions de xat i missatgeria, jocs, anàlisi de dades en temps real i molt més.

Admet estructures de dades flexibles, rèplica asíncrona mestre-esclau per escalar el rendiment de lectura i protegir contra la pèrdua de dades, fragmentació del costat del client per escalar el rendiment d'escriptura, dues formes de persistència per escriure dades en memòria al disc en un format compacte, agrupació i partició. També inclou errors automàtics per al desplegament d'alta disponibilitat mitjançant Redis Sentinel, scripts Lua, transaccions i molts més.

Al ser una base de dades NO SQL o no relacional, Redis ofereix alguns avantatges de rendiment respecte als sistemes de bases de dades tradicionals (com MySQL/MariaDB, PostgreSQL, etc.), perquè totes les seves dades resideixen o s'emmagatzemen a la memòria fent-les fàcilment accessibles per a una aplicació. mentre que les bases de dades tradicionals han d'escriure totes les dades o llegir-les des d'un disc o una font externa.

Redis s'ha convertit en una opció cada cop més freqüent per a l'emmagatzematge en memòria cau, que permet la reutilització de les dades emmagatzemades a la memòria cau (emmagatzemades a l'espai de memòria principal d'una aplicació) en lloc de consultar sempre a una base de dades les dades utilitzades amb freqüència. Per tant, és un fantàstic company de RDMS (Relational Database Management Systems) per millorar el rendiment de les aplicacions.

En aquesta sèrie de tutorials de Redis de tres parts, tractarem com configurar i utilitzar algunes de les funcions clau de Redis, que són la replicació, l'alta disponibilitat mitjançant Redis Sentinel i Redis Cluster, els articles són:

Aquesta guia mostra com configurar la replicació de Redis (amb el mode de clúster desactivat) a CentOS 8 Linux, inclosa com instal·lar Redis, configurar el mestre i les rèpliques i provar la rèplica.

Important: un clúster de Redis (és a dir, un clúster de replicació) amb el mode de clúster desactivat té un sol grup de nodes (per exemple, un mestre i una o dues rèpliques), on un clúster de Redis amb el mode de clúster activat pot estar format per dos o més grups de nodes (per exemple, tres mestres). cadascun amb esclaus o dos).

  1. Servidors amb instal·lació de CentOS 8

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

Amb la configuració anterior (que té un únic node principal/mestre de lectura/escriptura i 2 nodes de rèplica només de lectura), tenim un únic grup de nodes que conté totes les dades del clúster a cada node. Un cop un esclau es connecta a un mestre, rep una còpia inicial de la base de dades completa i es descartarà qualsevol dada que existia anteriorment a l'esclau.

A més, un client només pot escriure al mestre però llegir des de qualsevol node del clúster. I a mesura que es realitzen escriptures al mestre, es van propagar a tots els esclaus connectats per actualitzar els conjunts de dades esclaus en temps real.

Pas 1: instal·lar Redis a CentOS 8

1. Per començar, inicieu sessió a tots els nodes CentOS 8 mitjançant SSH i, a continuació, instal·leu el paquet Redis a tots els nodes (mestre i rèpliques) mitjançant el gestor de paquets DNF tal com es mostra.

# dnf install @redis

2. Un cop finalitzada la instal·lació del paquet Redis, inicieu el servei Redis, activeu-lo perquè s'iniciï automàticament a cada arrencada del sistema i comproveu si està en funcionament de la manera següent.

# systemctl start redis
# systemctl enable redis
# systemctl status redis

3. També podeu confirmar que el servidor Redis està en funcionament comprovant els ports d'escolta mitjançant l'ordre ss, de la següent manera.

# ss -ltpn | grep redis-server

Pas 2: Configuració del servidor principal de Redis

4. Redis es configura mitjançant el fitxer de configuració /etc/redis.conf, un exemple de fitxer de configuració autodocumentat. Primer, creeu una còpia de seguretat del fitxer original i, a continuació, obriu-lo per editar-lo amb l'editor de línia d'ordres que trieu.

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

5. De manera predeterminada, una instància de Redis està configurada per escoltar i acceptar connexions a la interfície de loopback, utilitzant la directiva bind. Per comunicar-se amb les rèpliques, el mestre s'hauria de configurar per escoltar l'adreça de bucle IPv4 i la seva adreça IP LAN, és a dir, 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. A continuació, configureu el paràmetre de mode protegit a no per permetre la comunicació amb les rèpliques tal com es mostra.

protected-mode no

A més, Redis escolta al port 6379 que s'estableix mitjançant la directiva port. Aquest és el port de dades per comunicar-se amb les API d'aplicacions o clients CLI.

port 6379

7. Per protegir opcionalment les comunicacions mestre-rèplica, podem protegir el mestre mitjançant la directiva requirepass, de manera que els clients/rèpliques han d'emetre una contrasenya d'autenticació abans d'executar qualsevol ordre o iniciar un procés de sincronització de rèplica, en cas contrari, el mestre rebutjarà la sol·licitud de client/rèplica (recordeu establir una contrasenya segura).

Utilitzarem la següent opció amb finalitats de demostració, per mostrar com funciona.

requirepass  [email 

8. A més, els registres de Redis s'emmagatzemen al fitxer /var/log/redis/redis.log, això s'estableix mitjançant la directiva de fitxer de registre i el nivell de verbositat del servidor predeterminat és l'avís, definit mitjançant el paràmetre loglevel.

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

9. Com que systemd és el gestor de serveis i sistema predeterminat a CentOS 8, podeu configurar Redis perquè interactuï amb l'arbre de supervisió de systemd establint el paràmetre supervisat a systemd.

supervised systemd

10. Després de fer totes les configuracions necessàries, deseu el fitxer i tanqueu-lo. A continuació, reinicieu el servei Redis per aplicar els nous canvis.

# systemctl daemon-reload
# systemctl restart redis

11. Per accedir al servidor Redis, hem d'utilitzar el redis-cli (una interfície de línia d'ordres per al servidor redis). Per defecte, es connecta al servidor del localhost (al port 6379 127.0.0.1). Tingueu en compte que com que el servidor està protegit dels clients mitjançant una contrasenya, l'execució d'una ordre abans de l'autenticació hauria de fallar.

Utilitzeu l'ordre auth per proporcionar la contrasenya d'autenticació tal com es mostra a la captura de pantalla següent.

# redis-cli
127.0.0.1:6379> client list
127.0.0.1:6379> AUTH [email 
127.0.0.1:6379> client list

12. Per connectar-se a una rèplica (després de configurar-les tal com es descriu a la secció següent), utilitzeu les opcions -h i -p per especificar l'adreça IP/nom d'amfitrió de la rèplica i port respectivament (no el port 6379 ha d'estar obert al tallafoc de la rèplica).

# redis-cli -h 10.42.0.21 -p 6379

13. A continuació, obriu el port de dades del servidor Redis al tallafoc per permetre connexions entrants al mestre i, posteriorment, torneu a carregar les regles del tallafoc mitjançant l'ordre firewall-cmd tal com es mostra.

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

Pas 3: Configuració dels servidors rèplica/esclau de Redis

14. Per configurar ràpidament una instància de Redis com a rèplica sobre la marxa, utilitzeu la utilitat redis-cli i crideu a l'ordre REPLICAOF tal com es mostra.

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

15. Per fer una connexió de rèplica permanent, heu de fer els canvis següents al fitxer de configuració. Comenceu fent una còpia de seguretat del fitxer original i, a continuació, obriu-lo per editar-lo.

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

16. Per permetre que els clients es connectin a la rèplica per llegir dades, afegiu l'adreça IP de la rèplica a la directiva bind.

# replica1
bind 127.0.0.1 10.42.0.21

# replica2
bind 127.0.0.1 10.42.0.34

17. Per configurar una instància de Redis com a rèplica, utilitzeu el paràmetre replicaof i configureu l'adreça IP (o el nom d'amfitrió) i el port del node mestre com a valors.

replicaof 10.42.0.247 6379

18. A continuació, com que la nostra instància mestra està protegida mitjançant una contrasenya, hem d'establir la contrasenya a la configuració de la rèplica per permetre que s'autentiqui amb el mestre, mitjançant el paràmetre masterauth.

masterauth [email 

19. A més, quan una rèplica perd la connexió amb el mestre, o quan la rèplica està en marxa, la rèplica es configura per respondre a les sol·licituds dels clients, possiblement amb dades desactualitzades. Però si és la primera sincronització, llavors el conjunt de dades pot estar buit. Aquest comportament està controlat pel paràmetre replica-serve-stale-data.

I, com que les rèpliques de Redis 2.6 per defecte són de només lectura, això està controlat pel paràmetre de només lectura de rèplica. Podeu fer altres ajustos de configuració de rèpliques per adaptar-vos a les vostres necessitats de l'aplicació.

20. Un cop hàgiu fet tots els canvis necessaris, reinicieu el servei Redis a totes les rèpliques.

# systemctl restart redis

21. A més, obriu el port 6379 al tallafoc per permetre connexions del mestre i dels clients a les rèpliques i torneu a carregar les regles del tallafoc.

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

Pas 4: comproveu l'estat de la rèplica de la rèplica mestra

22. Un cop s'hagi completat la configuració de rèplica mestra, podem comprovar si la configuració funciona correctament de la manera següent.

Al mestre, executeu les ordres següents.

# redis-cli
127.0.0.1:6379> AUTH [email 
127.0.0.1:6379> info replication

23. A més, comproveu l'estat de la rèplica a les rèpliques/esclaus de la manera següent.

# redis-cli
127.0.0.1:6379> info replication

23. Ara provem la rèplica configurant un valor-clau a la instància mestra i comprovem si les dades estan sincronitzades amb les rèpliques.

Al mestre, fes això:

# redis-cli
127.0.0.1:6379> AUTH [email 
127.0.0.1:6379> set domain 'linux-console.net'

24. A continuació, comproveu si les dades s'han sincronitzat amb les rèpliques tal com es mostra.

# redis-cli
127.0.0.1:6379> get domain

25. Redis té una característica que permet a una instància mestra limitar el risc de perdre algunes escriptures en cas que no hi hagi prou rèpliques disponibles, a un nombre especificat de segons.

Això vol dir que un mestre pot deixar d'acceptar escriptures si hi ha menys de N rèpliques connectades, amb un retard inferior o igual a M segons, tal com ho controlen les opcions min-replicas-to-write i min-replicas-max-lag respectivament.

Per configurar-los, descomenceu-los i configureu els valors segons els vostres requisits de configuració a /etc/redis.conf, tal com es mostra a la captura de pantalla següent. Aquesta configuració significa que, des de l'últim ping fins a les rèpliques, després de 10 segons, si hi ha menys de 2 rèpliques en línia, el mestre deixarà d'acceptar escriptures.

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

Podeu trobar més opcions a la resta del fitxer de configuració /etc/redis.conf i per obtenir més detalls sobre la rèplica a la documentació de Redis.

En el següent article, explicarem com configurar Redis per a una alta disponibilitat amb Sentinel a CentOS 8. Fins aleshores, manteniu-vos tancat i recordeu compartir les vostres reflexions i preguntes mitjançant el nostre formulari de comentaris que hi ha a continuació perquè us podeu posar en contacte amb nosaltres.