Hoe Redis-replicatie (met clustermodus uitgeschakeld) instellen in CentOS 8 – Deel 1

Redis (Remote Dictionary Server) is een zeer populair en veelgebruikt open source, snel, gedistribueerd en efficiënt in-memory key-value database/datastructuur server.

Het biedt een uitgebreide set functies die het effectief maken voor een breed scala aan gebruiksscenario’s: als database, cachinglaag, berichtenmakelaar of wachtrij; toepasbaar in webapplicaties, chat- en berichtenapplicaties, gaming, real-time data-analyse en nog veel meer.

Het ondersteunt flexibele datastructuren, master-slave asynchrone replicatie om de leesprestaties te schalen en tegen dataverlies te beschermen, client-side sharding om de schrijfprestaties te schalen, twee vormen van persistentie om in-memory data op een compacte manier naar schijf te schrijven, clustering en partitionering. Het heeft ook automatische failovers voor implementaties met hoge beschikbaarheid via Redis Sentinel, Lua scripting, transacties, en nog veel meer.

Als een NO SQL– of niet-relationele database biedt Redis enkele prestatievoordelen ten opzichte van traditionele databasesystemen (zoals MySQL/MariaDB, PostgreSQL, etc.), omdat al zijn gegevens in het geheugen worden opgeslagen waardoor ze gemakkelijk toegankelijk zijn voor een applicatie, terwijl traditionele databases alle gegevens naar schijf moeten schrijven of lezen vanuit een externe bron.

Redis is een steeds populairdere keuze geworden voor caching, wat het hergebruik van gecachte gegevens mogelijk maakt (opgeslagen binnen de hoofdgeheugenruimte van een applicatie) in plaats van altijd een database te bevragen voor veelgebruikte gegevens. Het is dus een fantastische metgezel van RDMS (Relationele Database Management Systemen) om uiteindelijk de prestaties van de applicatie te verbeteren.

In deze driedelige Redis-zelfstudiereeks zullen we behandelen hoe je enkele van de belangrijkste functies van Redis kunt instellen en gebruiken, zoals replicatie, hoge beschikbaarheid met Redis Sentinel en Redis Cluster, de artikelen zijn:

Part 1: How To Setup Redis Replication(with Cluster-Mode Disabled) in CentOS 8

Deze handleiding laat zien hoe je Redis Replicatie (met Cluster-Modus Uitgeschakeld) instelt in CentOS 8 Linux, inclusief hoe je Redis installeert, de master en replica’s configureert, en de replicatie test.

Belangrijk: Een Redis Cluster (d.w.z. een Replicatiecluster) met clustermodus uitgeschakeld heeft een enkele nodegroep (bijv. een master en één of twee replica’s), terwijl een Redis-cluster met ingeschakelde clustermodus uit twee of meer nodegroepen kan bestaan (bijv. drie masters met elk slaves of twee).

Vereisten:

  1. Servers met CentOS 8 Installatie

Testomgeving Setup

Redis Master Server: 10.42.0.247
Redis Replica1/Slave1: 10.42.0.21
Redis Replica2/Slave2: 10.42.0.34
Logical Representation of Redis Replication Diagram

Met de bovenstaande setup (die een enkele lees/schrijf primaire/master node en 2 alleen-lezen replica nodes heeft), hebben we een enkele node groep die alle gegevens van de cluster bevat in elke node. Zodra een slave verbinding maakt met een master, ontvangt het een initiële kopie van de volledige database en worden eventuele gegevens die eerder op de slave bestonden, verwijderd.

Bovendien kan een client alleen schrijven naar de master maar lezen vanaf elke node in de cluster. En aangezien schrijfoperaties worden uitgevoerd op de master, worden ze verspreid naar alle verbonden slaves om de datasets van de slave in realtime bij te werken.

Stap 1: Redis installeren op CentOS 8

1. Om te beginnen, log in op alle CentOS 8 nodes via SSH, installeer vervolgens het Redis pakket op alle nodes (master en replica’s) met behulp van de DNF package manager zoals getoond.

# dnf install @redis

2. Na voltooiing van de installatie van het Redis pakket, start u de Redis service, schakelt u deze in om automatisch te starten bij elke systeemstart en controleert u of deze actief is zoals hieronder wordt weergegeven.

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

3. U kunt ook bevestigen dat de Redis server actief is door luisterende poorten te controleren met behulp van het ss commando, zoals hieronder wordt weergegeven.

# ss -ltpn | grep redis-server
Confirm Redis Server Ports

Stap 2: Configuratie van Redis Master Server

4. Redis is geconfigureerd met behulp van het configuratiebestand /etc/redis.conf, een voorbeeld van een zelfgedocumenteerd configuratiebestand. Maak eerst een back-up van het originele bestand en open het vervolgens voor bewerking met uw commandoregel-editor naar keuze.

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

5. Standaard is een Redis-instantie geconfigureerd om verbindingen te accepteren op de loopback-interface, met behulp van de bind-directive. Om te communiceren met de replica’s moet de master geconfigureerd zijn om te luisteren op het IPv4-loopbackadres en zijn LAN-IP-adres, bijvoorbeeld 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Stel vervolgens de parameter protected-mode in op no om communicatie met de replica’s toe te staan zoals getoond.

protected-mode no

Ook luistert Redis op poort 6379, die wordt ingesteld met de port-directive. Dit is de datapoort voor communicatie met toepassings-API’s of CLI-clients.

port 6379
Configuring Redis Master Server

7. Om optioneel de communicatie tussen master en replica te beveiligen, kunnen we de master beveiligen met behulp van de requirepass-directive, zodat de clients/replica’s een authenticatie wachtwoord moeten opgeven voordat ze commando’s kunnen uitvoeren of een replicatiesynchronisatieproces kunnen starten. Anders weigert de master het verzoek van de client/replica (vergeet niet een veilig wachtwoord in te stellen).

We zullen de volgende optie gebruiken voor demonstratiedoeleinden, om te laten zien hoe het werkt.

requirepass  Securep@55Here
Set Authentication Password

8. Bovendien worden Redis-logs opgeslagen in het bestand /var/log/redis/redis.log, dit wordt ingesteld met de logfile-richtlijn en het standaard server-verbositeitsniveau is notice, gedefinieerd met behulp van de loglevel-parameter.

loglevel  notice
logfile  /var/log/redis/redis.log
Set Redis Log File and Log Level

9. Aangezien systemd de standaard systeem- en servicedirecteur is in CentOS 8, kunt u Redis configureren om te communiceren met de systemd-toezichtstructuur door de supervised-parameter in te stellen op systemd.

supervised systemd
Set Redis Supervisor to Systemd

10. Nadat alle noodzakelijke configuraties zijn gemaakt, sla het bestand op en sluit het. Start vervolgens de Redis-service opnieuw op om de nieuwe wijzigingen toe te passen.

# systemctl daemon-reload
# systemctl restart redis

11. Om toegang te krijgen tot de Redis-server, moeten we de redis-cli gebruiken (een command-line interface naar de redis-server). Standaard maakt het verbinding met de server op de localhost (op 127.0.0.1 poort 6379). Let op dat omdat de server beveiligd is tegen clients met een wachtwoord, het uitvoeren van een opdracht vóór authenticatie zou moeten mislukken.

Gebruik het auth-commando om het authenticatiewachtwoord te verstrekken zoals weergegeven in de volgende schermafbeelding.

# redis-cli
127.0.0.1:6379> client list
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> client list
Access Redis Server via Redis CLI

12. Om verbinding te maken met een replica (nadat ze zijn geconfigureerd zoals beschreven in de volgende sectie), gebruik de -h en -p opties om respectievelijk het IP-adres/hostname en poort van de replica op te geven (let op dat poort 6379 open moet zijn in de firewall van de replica).

# redis-cli -h 10.42.0.21 -p 6379

13. Open vervolgens de Redis server datapoort in de firewall om inkomende verbindingen naar de master toe te staan, en herlaad vervolgens de firewallregels met behulp van het firewall-cmd commando zoals getoond.

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

Stap 3: Configuratie van Redis Replica/Slave Servers

14. Om snel een Redis instantie in te stellen als replica on-the-fly, gebruik de redis-cli utility en roep het REPLICAOF commando aan zoals getoond.

# redis-cli replicaof 10.42.0.247 6379
OR
# redis-cli
127.0.0.1:6379> REPLICAOF 10.42.0.247 6379
Connect to a Master Redis Instance

15. Om een replicatieverbinding permanent te maken, moet je de volgende wijzigingen aanbrengen in het configuratiebestand. Begin met het maken van een back-up van het originele bestand, en open het vervolgens om te bewerken.

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

16. Om clients toe te staan verbinding te maken met de replica om gegevens te lezen, voeg het IP-adres van de replica toe aan de bind directive.

# replica1
bind 127.0.0.1 10.42.0.21

# replica2
bind 127.0.0.1 10.42.0.34

Instellen van een Redis Instantie als Replica

17. Om een Redis instantie in te stellen als een replica, gebruik de replicaof parameter en stel de IP-adres (of hostnaam) en poort van de master node in als waarden.

replicaof 10.42.0.247 6379

Instellen van Replica om te Authenticeren bij de Master

18. Vervolgens, aangezien onze master instantie beschermd is met een wachtwoord, moeten we het wachtwoord instellen in de replica configuratie om het in staat te stellen zich te authenticeren bij de master, met behulp van de masterauth parameter.

masterauth Securep@55Here

19. Bovendien, wanneer een replica de verbinding met de master verliest, of wanneer de replicatie gaande is, is de replica geconfigureerd om te reageren op clientverzoeken, mogelijk met “verouderde” gegevens. Maar als het de eerste synchronisatie betreft, kan de dataset gewoon leeg zijn. Dit gedrag wordt gecontroleerd door de parameter replica-serve-stale-data.

En, aangezien Redis 2.6 standaard replica’s alleen-lezen zijn, wordt dit gecontroleerd door de parameter replica-read-only. U kunt andere replica-configuratieaanpassingen maken om aan uw toepassingsbehoeften te voldoen.

20. Zodra u alle benodigde wijzigingen heeft aangebracht, herstart u de Redis-service op alle replica’s.

# systemctl restart redis

21. Open ook poort 6379 in de firewall om verbindingen van de master en clients met de replica’s toe te staan, en herlaad de firewallregels.

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

Stap 4: Controleer de status van de master-replica-replicatie

22. Zodra de configuratie van de master-replica-replicatie compleet is, kunnen we controleren of de opstelling goed werkt als volgt.

Voer op de master de volgende commando’s uit.

# redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> info replication
Check Redis Relocation Info on Master

23. Controleer ook de replicatiestatus op de replica’s/slaves als volgt.

# redis-cli
127.0.0.1:6379> info replication
Check Redis Replication Info on Redis Replica 1
Check Redis Replication Info on Redis Replica 2

23. Laten we nu de replicatie testen door een sleutel-waarde in de masterinstantie in te stellen en te controleren of de gegevens gesynchroniseerd zijn met de replica’s.

Doe dit op de master:

# redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> set domain 'www.tecmint.com'
Set Key Value in Master Instance

24. Controleer vervolgens of de gegevens zijn gesynchroniseerd met de replica’s zoals getoond.

# redis-cli
127.0.0.1:6379> get domain
Check Data Sync Status on Replicas

Bescherming van de hoofdinstantie tegen het risico van het verliezen van enkele schrijfbewerkingen

25. Redis heeft een functie waarmee een hoofdinstantie het risico kan beperken van het verliezen van enkele schrijfbewerkingen als er niet genoeg replica’s beschikbaar zijn, tot een gespecificeerd aantal seconden.

Dit betekent dat een hoofdinstatie kan stoppen met het accepteren van schrijfbewerkingen als er minder dan N replica’s zijn verbonden, met een vertraging van minder dan of gelijk aan M seconden, zoals geregeld door de opties min-replicas-to-write en min-replicas-max-lag.

Om ze in te stellen, moet je ze uitcommentariëren en de waarden instellen volgens je setupvereisten in /etc/redis.conf, zoals weergegeven in de volgende screenshot. Deze configuratie betekent dat, vanaf de laatste ping naar replica’s, na 10 seconden, als er minder dan 2 replica’s online zijn, de hoofdinstatie zal stoppen met het accepteren van schrijfbewerkingen.

min-replicas-to-write 2
min-replicas-max-lag 10
Protecting the Redis Master Against Loss of Write

Je kunt meer opties vinden in de rest van het configuratiebestand /etc/redis.conf en voor meer details kun je lezen over replicatie in de Redis-documentatie.

In het volgende artikel zullen we behandelen hoe je Redis kunt instellen voor hoge beschikbaarheid met Sentinel in CentOS 8. Tot dan, blijf op slot en vergeet niet om je gedachten en vragen te delen via ons opmerkingenformulier hieronder dat er voor jou is om ons te bereiken.

Source:
https://www.tecmint.com/setup-redis-replication-in-centos-8/