Com configurar un clúster Redis a CentOS 8 - Part 3


Redis Cluster és una funció de Redis integrada que admet la fragmentació automàtica, la replicació i l'alta disponibilitat que s'havia implementat anteriorment amb Sentinels. Està dissenyat per a dos propòsits principals: un és dividir automàticament el vostre conjunt de dades entre múltiples instàncies i, en segon lloc, proporcionar un cert grau de disponibilitat durant les particions, per continuar operant quan algunes instàncies (especialment les mestres) fallen o no es poden comunicar amb la majoria de les particions. nodes del clúster.

Tanmateix, el clúster s'atura per funcionar en cas de fallades més grans (p. ex., quan la majoria de les instàncies mestres no estan disponibles). A més, si un mestre i un esclau fallen al mateix temps, el clúster no pot continuar amb les operacions normals (tot i que la solució és afegir més nodes o crear una asimetria al clúster, per canviar automàticament la disposició del clúster).

Segons la documentació del clúster de Redis, el \clúster mínim que funciona com s'esperava requereix que contingui almenys 3 nodes mestres. Però la configuració més adequada per a una alta disponibilitat hauria de tenir almenys 6 nodes amb tres mestres i tres esclaus, cada mestre amb un esclau.

Important: Redis Cluster també té algunes limitacions que són la manca de suport per als entorns NAT, així com aquells en què les adreces IP o els ports TCP es reassignen, per exemple, a Docker. A més, no totes les biblioteques de client ho admeten.

Aquest article mostra com configurar un clúster Redis (amb el mode de clúster desactivat) a CentOS 8. Inclou com instal·lar Redis, configurar els nodes del clúster, crear un clúster i provar la migració per error del clúster.

Nota: per a aquesta guia, utilitzarem instàncies de Redis noves/buides per executar el mode de clúster. El mode de clúster no funcionarà amb algunes configuracions fetes a les dues primeres guies de la nostra sèrie Redis, sobretot no funciona quan s'utilitza la rèplica del paràmetre.

  1. Servidors amb instal·lació de 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

La nostra configuració té 3 nodes mestres de lectura/escriptura i 3 nodes de rèplica només de lectura, cada mestre té una rèplica, de manera que tres fragments contenen totes les dades del clúster a cada node. Una API d'aplicació o un client CLI només pot escriure als nodes mestres però llegir des de qualsevol node del clúster.

Pas 1: instal·lar Redis a tots els nodes

1. Inicieu sessió a totes les instàncies mitjançant SSH i, a continuació, executeu l'ordre següent per instal·lar el mòdul Redis mitjançant el gestor de paquets DNF tal com es mostra.

# dnf module install redis

2. A continuació, inicieu el servei Redis, activeu-lo perquè s'iniciï automàticament a l'arrencada del sistema i comproveu el seu estat per verificar que s'està executant (verifiqueu el servei a les 6 instàncies):

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

Pas 2: Configuració de les instàncies de Redis a tots els nodes

3. En aquesta secció es descriu com configurar els nodes del clúster Redis. Recordeu realitzar les configuracions aquí a tots els nodes.

Utilitzeu el fitxer de configuració /etc/redis.conf per configurar el servidor Redis. Com a pràctica recomanada, creeu una còpia de seguretat del fitxer original abans d'editar-lo mitjançant un editor de text de línia d'ordres que trieu.

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

4. A continuació, cerqueu els paràmetres de configuració següents i editeu-ne els valors tal com es mostra. El paràmetre d'enllaç estableix la interfície del servidor Redis que escoltarà, estableix el seu valor a la IP LAN de la instància. Elimineu el 127.0.0.1 perquè ens vam adonar que deixar-lo allà alenteix el procés de creació del clúster, especialment l'etapa d'unió al clúster.

bind  10.42.0.247

A continuació, configureu el mode protegit a no per permetre connexions des d'altres instàncies del clúster.

protected-mode no

El paràmetre de port defineix el port en què el servidor Redis escoltarà les connexions, el valor predeterminat és 6379. Aquest és el port de dades per comunicar-se amb els clients.

port 6379

5. El següent conjunt de paràmetres activarà el mode de clúster i establirà algunes de les seves característiques útils. El paràmetre habilitat per clúster, quan s'estableix a yes, activa el mode de clúster.

cluster-enabled yes

A continuació, el paràmetre cluster-config-file estableix el nom del fitxer de configuració del clúster d'un node de clúster (p. ex. nodes-6379.conf). El fitxer es crea al directori de treball (per defecte és /var/lib/redis definit mitjançant el paràmetre dir) i no es pot editar per l'usuari.

cluster-config-file nodes-6379.conf

La següent opció de clúster útil és cluster-node-timeout, s'utilitza per establir la quantitat màxima de temps en mil·lisegons que una instància pot no estar disponible perquè es consideri en un estat de fallada. Un valor de 15.000 equival a 15 segons.

cluster-node-timeout 15000

6. També hem d'habilitar la persistència de Redis al disc. Podem utilitzar un dels modes de persistència, és a dir, el fitxer Append Only (AOF): registra (al fitxer appendonly.aof creat sota el directori de treball) cada operació d'escriptura rebuda amb èxit pel servidor. Les dades es reproduiran durant l'inici del servidor per reconstruir el conjunt de dades original.

Per activar-lo, configureu el paràmetre appendonly a yes.

appendonly yes

7. Després de fer tots els canvis, reinicieu el servei Redis a tots els nodes per aplicar els canvis recents.

# systemctl restart redis

8. En aquest punt, cada node del clúster ara hauria de tenir un ID. Podeu comprovar-ho al fitxer de registre que es troba a /var/log/redis/redis.log.

# cat /var/log/redis/redis.log

9. A continuació, obriu el port 6397 i 16379 a totes les instàncies. El port posterior s'utilitza per al bus del clúster (un canal de comunicació de node a node que utilitza un protocol binari). Aquest és un requisit bàsic per a les connexions TCP del clúster Redis.

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

Pas 3: creació del clúster Redis

10. Per crear el clúster, utilitzeu el client de línia d'ordres redis-cli de la manera següent. El --cluster create permet la creació de clúster i --cluster-replicas 1 significa crear una rèplica per mestre.

Per a la nostra configuració que té 6 nodes, tindrem 3 mestres i 3 esclaus.

Tingueu en compte que els primers 6 nodes es consideraran mestres (M) i els tres següents es consideraran esclaus (S). El primer esclau, és a dir, 10.42.0.200:6379, replica el primer mestre, és a dir, 10.42.0.247:6379, el segon esclau replica el segon mestre, en aquest ordre.

La següent comanda té un format de manera que el resultat representi la nostra configuració lògica anterior.

# 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. Un cop s'hagi creat correctament el clúster, executeu l'ordre següent en qualsevol amfitrió (especifiqueu la seva adreça IP amb el senyalador -h) per llistar tots els nodes del clúster.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes

Hauríeu de poder veure tots els nodes del clúster, amb els esclaus indicant els seus mestres, tal com es mostra a la captura de pantalla següent.

Els diferents camps estan en aquest ordre: ID de node, adreça IP:port, flags, últim ping enviat, últim pong rebut, època de configuració, estat de l'enllaç, ranures (per a mestres).

Pas 4: prova de la migració per error del clúster Redis

12. En aquesta secció, demostrarem com provar una migració per error de clúster. Primer, prenem nota dels mestres.

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

A més, tingueu en compte els esclaus Redis.

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

13. A continuació, aturem el servei Redis en un dels nodes mestres, per exemple, 10.42.0.197 i comprovem tots els nodes mestres del clúster.

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

A la captura de pantalla següent, podeu veure que el node 10.42.0.197:6367 està en estat de fallada i el seu esclau 10.42.0.21:6379 s'ha ascendit a l'estat de mestre.

14. Ara tornem a iniciar el servei Redis al node fallit i comprovem tots els mestres del clúster.

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

A més, comproveu els esclaus del clúster per confirmar que el mestre fallit ara és un esclau.

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

Pas 5: prova de la replicació de dades al clúster Redis

15. Aquesta darrera secció explica com verificar la replicació de dades del clúster. Crearem una clau i un valor en un dels mestres, i després intentarem llegir-lo des de tots els nodes del clúster de la manera següent. Utilitzeu l'interruptor -c per habilitar el suport de clúster sota la utilitat redis-cli i accedir a les dades en mode de clúster.

# 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

La conclusió és que el clúster Redis és la manera preferida d'aconseguir fragmentació automàtica, replicació i alta disponibilitat. Hi ha molts altres paràmetres de configuració ben documentats a la resta del fitxer /etc/redis.conf, podeu trobar més informació a la documentació oficial: tutorial del clúster Redis i especificació del clúster Redis.

Això ens porta al final de la sèrie de tutorials de Redis de tres parts. El formulari de comentaris següent es pot utilitzar per publicar preguntes o comentaris.