Zoeken op website

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


Redis (Remote Dictionary Server) is een zeer populaire en veelgebruikte open source, snelle, gedistribueerde en efficiënte in-memory sleutelwaardedatabase/datastructuurserver.

Het biedt een rijke reeks 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, realtime data-analyse en nog veel meer.

Het ondersteunt flexibele datastructuren, master-slave asynchrone replicatie om de leesprestaties te schalen en te beschermen tegen gegevensverlies, sharding aan de clientzijde om de schrijfprestaties te schalen, twee vormen van persistentie voor het schrijven van gegevens in het geheugen naar schijf in een compact formaat, clustering en verdeling. Het beschikt ook over automatische failovers voor implementatie met hoge beschikbaarheid via Redis Sentinel, Lua-scripting, transacties en nog veel meer.

Omdat het een GEEN SQL of niet-relationele database is, biedt Redis enkele prestatievoordelen ten opzichte van traditionele databasesystemen (zoals MySQL/MariaDB, PostgreSQL, enz.), omdat alle gegevens zich in het geheugen bevinden of worden opgeslagen, waardoor deze gemakkelijk toegankelijk zijn voor een applicatie, terwijl traditionele databases alle gegevens moeten schrijven naar of lezen van schijf of een externe bron.

Redis is een steeds vaker voorkomende keuze geworden voor caching, waardoor gegevens in de cache kunnen worden hergebruikt (opgeslagen in de hoofdgeheugenruimte van een applicatie) in plaats van altijd in een database te zoeken naar veelgebruikte gegevens. Het is dus een fantastische aanvulling op RDMS (Relationele Database Management Systemen) om uiteindelijk de applicatieprestaties te verbeteren.

In deze driedelige Redis-tutorialreeks bespreken we hoe u enkele van de belangrijkste functies van Redis kunt instellen en gebruiken, zoals replicatie, hoge beschikbaarheid met behulp van Redis Sentinel en Redis Cluster, de artikelen zijn:

Deze handleiding laat zien hoe u Redis Replication instelt (met Cluster-Mode uitgeschakeld) in CentOS 8 Linux, inclusief hoe u Redis installeert en de master configureert en replica's, en test de replicatie.

Belangrijk: een Redis Cluster (d.w.z. een Replicatie Cluster) waarbij de clustermodus is uitgeschakeld, heeft één knooppuntgroep ( bijvoorbeeld een master en één of twee replica's), waarbij een Redis-cluster met ingeschakelde clustermodus uit twee of meer knooppuntgroepen kan bestaan (bijvoorbeeld drie masters met elk slaven of twee).

Vereisten:

  1. Servers met CentOS 8-installatie

Testomgeving instellen

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

Met de bovenstaande opstelling (die één primair/master-knooppunt voor lezen/schrijven en twee alleen-lezen replicaknooppunten heeft), hebben we één knooppuntgroep die alle gegevens van het cluster in elk knooppunt bevat. Zodra een slave verbinding maakt met een master, ontvangt deze een eerste kopie van de volledige database en worden alle gegevens die eerder op de slave aanwezig waren, verwijderd.

Bovendien kan een client alleen naar de master schrijven, maar lezen vanaf elk knooppunt in het cluster. En terwijl de schrijfbewerkingen op de master worden uitgevoerd, worden deze doorgegeven aan alle aangesloten slaves, zodat de slave-datasets in realtime kunnen worden bijgewerkt.

Stap 1: Redis installeren op CentOS 8

1. Log om te beginnen in op alle CentOS 8 knooppunten via SSH en installeer vervolgens het Redis pakket op alle knooppunten (master en replica's ) met behulp van de DNF-pakketbeheerder, zoals weergegeven.


dnf install @redis

2. Nadat de installatie van het Redis-pakket is voltooid, start u de Redis-service, schakelt u deze in om automatisch te starten bij elke systeemstart en controleert u of dit het geval is als volgt in gebruik.

systemctl start redis
systemctl enable redis
systemctl status redis

3. U kunt ook bevestigen dat de Redis-server actief is door de luisterpoorten te controleren met de opdracht ss, als volgt.

ss -ltpn | grep redis-server

Stap 2: Redis Master Server configureren

4. Redis wordt geconfigureerd met behulp van het /etc/redis.conf configuratiebestand, een zelfgedocumenteerd voorbeeldconfiguratiebestand. Maak eerst een back-up van het originele bestand en open het vervolgens om het te bewerken met de opdrachtregeleditor van uw keuze.

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

5. Standaard is een Redis-instantie geconfigureerd om te luisteren en verbindingen te accepteren op de loopback-interface, met behulp van de bind-instructie. Om met de replica's te communiceren, moet de master worden geconfigureerd om te luisteren naar het IPv4 loopback-adres en het LAN IP-adres, d.w.z. 10.42.0.247.

bind 127.0.0.1 10.42.0.247

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

protected-mode no

Redis luistert ook op poort 6379, die is ingesteld met behulp van de port-richtlijn. Dit is de datapoort voor communicatie met applicatie-API's of CLI-clients.

port 6379

7. Om de master-replica communicatie optioneel te beveiligen, kunnen we de master beschermen met behulp van de requirepass richtlijn, zodat de clients/replica's dit moeten doen geef een authenticatiewachtwoord uit voordat u opdrachten uitvoert of een replicatiesynchronisatieproces start, anders zal de master het client-/replicaverzoek weigeren (vergeet niet om een veilig wachtwoord in te stellen).

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

requirepass  Securep@55Here

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

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

9. Aangezien systemd de standaard systeem- en servicebeheerder is in CentOS 8, kunt u Redis configureren voor interactie met de supervisieboom systemd door de parameter supervised in te stellen op systemd.

supervised systemd

10. Nadat u alle benodigde configuraties heeft gemaakt, slaat u het bestand op en sluit u het. Start vervolgens de Redis-service opnieuw 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 opdrachtregelinterface voor de redis-server). Standaard maakt het verbinding met de server op de localhost (op 127.0.0.1 poort 6379). Houd er rekening mee dat, omdat de server is beveiligd tegen clients die een wachtwoord gebruiken, het uitvoeren van een opdracht vóór verificatie zou moeten mislukken.

Gebruik de opdracht auth om het authenticatiewachtwoord op te geven, 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

12. Om verbinding te maken met een replica (nadat je deze hebt geconfigureerd zoals beschreven in de volgende sectie), gebruik je de -h en -p opties om respectievelijk het replica-IP-adres/hostnaam en de poort op te geven (niet 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 datapoort van de Redis-server in de firewall om inkomende verbindingen met de master toe te staan, en laad vervolgens de firewallregels opnieuw met behulp van de firewall-cmd-opdracht, zoals weergegeven.

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

Stap 3: Redis Replica/Slave-servers configureren

14. Als u snel een Redis-instantie als replica wilt instellen, gebruikt u het hulpprogramma redis-cli en roept u de REPLICAOF aan commando zoals weergegeven.

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

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

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

16. Om clients in staat te stellen verbinding te maken met de replica om gegevens te lezen, voegt u het replica-IP-adres toe aan de bindinstructie.

replica1
bind 127.0.0.1 10.42.0.21

replica2
bind 127.0.0.1 10.42.0.34

Een Redis-instantie instellen als replica

17. Om een Redis-instantie te configureren als een replica, gebruikt u de parameter replicaof en stelt u het IP-adres (of de hostnaam) en poort van het hoofdknooppunt in als waarden.

replicaof 10.42.0.247 6379

Replica instellen om te verifiëren bij de master

18. Omdat onze master-instantie vervolgens is beveiligd met een wachtwoord, moeten we het wachtwoord instellen in de replicaconfiguratie om authenticatie bij de master mogelijk te maken, met behulp van de masterauth parameter.

masterauth Securep@55Here

19. Bovendien, wanneer een replica de verbinding met de master verliest, of wanneer de replicatie bezig is, wordt de replica geconfigureerd om te reageren op klantverzoeken, mogelijk met de melding 'verouderd ” gegevens. Maar als het de eerste synchronisatie is, is de dataset mogelijk gewoon leeg. Dit gedrag wordt bepaald door de parameter replica-serve-stale-data.

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

20. Zodra u alle noodzakelijke wijzigingen heeft aangebracht, start u de Redis-service opnieuw 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 mogelijk te maken, en laad de firewallregels opnieuw.

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

Stap 4: Controleer de replicatiestatus van de masterreplica

22. Zodra de master-replica replicatieconfiguratie voltooid is, kunnen we als volgt controleren of de installatie goed werkt.

Voer op de master de volgende opdrachten uit.

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

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

redis-cli
127.0.0.1:6379> info replication

23. Laten we nu de replicatie testen door een sleutelwaarde in de hoofdinstantie in te stellen en te controleren of de gegevens worden gesynchroniseerd 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 'linux-console.net'

24. Controleer vervolgens of de gegevens zijn gesynchroniseerd met de replica's, zoals weergegeven.

redis-cli
127.0.0.1:6379> get domain

De masterinstantie beschermen tegen het risico dat sommige schrijfbewerkingen verloren gaan

25. Redis heeft een functie waarmee een hoofdinstantie het risico van verlies van schrijfbewerkingen kan beperken tot een bepaald aantal seconden als er niet genoeg replica's beschikbaar zijn.

Dit betekent dat een master 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 bepaald door de min -replicas-to-write en min-replicas-max-lag opties respectievelijk.

Om ze in te stellen, verwijdert u de opmerkingen en stelt u de waarden in volgens uw installatievereisten in /etc/redis.conf, zoals weergegeven in de volgende schermafbeelding. Deze configuratie betekent dat, vanaf de laatste ping tot replica's, na 10 seconden, als er minder dan twee replica's online zijn, de master stopt met het accepteren van schrijfbewerkingen.

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

U kunt meer opties vinden in de rest van het /etc/redis.conf configuratiebestand en voor meer details leest u over replicatie in de Redis-documentatie.

In het volgende artikel bespreken we hoe u Redis instelt voor hoge beschikbaarheid met Sentinel in CentOS 8. Blijf tot die tijd op slot en vergeet niet om uw gedachten en vragen te delen via ons reactieformulier hieronder, zodat u ons kunt bereiken.