Een zeer beschikbare Redis-database maken met Sentinel-monitoring

GEPOST DOOR Zevenet | 10 juni 2019

Overzicht

Redis is een open-source gegevensopslag in het geheugen die kan worden gebruikt als een berichtenbemiddelaar, cache en sleutelwaardedatabase. Het ondersteunt verschillende datastructuren: hashes, lijsten, sets, gesorteerde sets, bitmaps, geospatiale indexen, hyperloglogs, etc.

Wat Redis uniek maakt, is dat het kan worden beschouwd als zowel een winkel als een cache. Het is ontworpen op een manier waarbij gegevens worden gewijzigd en / of gelezen uit het hoofdcomputergeheugen.

Redis biedt onder andere een hoge beschikbaarheid via Redis Sentinelen automatisch partitioneren, via Redis Cluster. Bovendien heeft Redis een replicatiemechanisme waarmee slave-exemplaren exacte kopieën van master-exemplaren kunnen zijn. De slave maakt automatisch opnieuw verbinding met de master elke keer dat de link verbreekt, en heeft als doel een exacte kopie ervan te zijn.

Aangezien Redis Sentinel een hoge beschikbaarheid voor Redis biedt, kan het in veel gevallen automatisch zonder storingen handelen, maar biedt het ook andere taken zoals monitoring, meldingen en fungeert het als een configuratieprovider voor clients.

Maar wat gebeurt er wanneer Sentinel een Redis-server detecteert als down? We zullen in dit artikel ontdekken hoe u een complete virtuele service met hoge beschikbaarheid voor Redis kunt maken.

Houd er rekening mee dat deze configuratie ook kan worden uitgevoerd, zelfs als uw Redis-server Sentinel niet gebruikt voor monitoring.

Redis load-balancing omgeving

Het scenario dat we in dit artikel willen bereiken, wordt weergegeven in het onderstaande schema.

Redis Sentinel controleert de status van alle Redis-knooppunten en wijzigt de rol van de Redis-server zodra een fout wordt gedetecteerd.

De load balancer controleert ook de status, maar doet dit periodiek om de paar seconden. Er kunnen gevallen zijn waarin Sentinel het probleem detecteert, maar het kan enkele seconden duren voordat de load balancer dit realiseert. Dit kan ertoe leiden dat de balancer aanvragen naar de verkeerde master verzendt, degene die zojuist is mislukt maar door Sentinel is omgeschakeld.

Zevenet biedt een manier om dit probleem op te lossen, de L4-boerderij voert periodiek controles uit. Aan de andere kant is er ook de stroom die wordt doorgegeven aan de backend die geen eerdere controle bevat. Wanneer de boerderijvoogd zich realiseert dat de backend niet reageert, slaat hij alarm om aan te geven dat de stroom niet op deze manier mag gaan.

Hiermee rekening houdend, hebben we enerzijds de controles en anderzijds de verzoeken. Als de controle mislukt, wordt de stroom onmiddellijk naar een ander knooppunt verzonden. Zelfs de lopende petities worden doorgestuurd naar een ander online knooppunt. Dit wordt in de configuratie nader toegelicht.

Configuratie van taakverdeling opnieuw uitvoeren

Voordat we de farm kunnen opzetten, hebben we een virtueel IP nodig. Om dat te bereiken, ga naar Netwerk> Virtuele interfaces. Klik vervolgens op Actie> Virtuele interface maken. Selecteer vervolgens Ouder interface, Virtuele interfacenaam en IP-adres:

Vervolgens moeten we voor Redis virtuele server een L4xNAT-farm maken. Ga daarvoor naar LSLB> Boerderijenen klik vervolgens op Actie en Maak een boerderij.

Nadat de eerste parameters zijn ingesteld, klikt u op creëren. Ga vervolgens naar de Geavanceerd en zorg ervoor dat het protocoltype TCP is.

Ga vervolgens naar Diensten. Backends en Farm Guardian worden hier ingesteld voor geavanceerde gezondheidscontrole. Zoek eerst de backends sectie en klik op Acties> Backend toevoegen zoals hieronder weergegeven:

Redis monitoring en geavanceerde gezondheidscontrole

Ten slotte zijn de Farm Guardian-controles vereist om ervoor te zorgen dat we altijd het online knooppunt gebruiken, zoals eerder uitgelegd. Daarvoor moeten we het volgende configureren als de opdracht Farm Guardian:

check_tcp -E -H HOST -p PORT -s 'info replication\r\n' -e role:master -t 3

Waar HOST en PORT wordt vervangen door het IP-adres en de poort van de Redis-server van elke backend. Het bevel info replicatie krijgen de informatie van de Redis-server om te controleren welke master nog in leven is, verbindingen worden alleen naar de server omgeleid als de role master wordt gepresenteerd, zodra Sentinel de rol verandert, zal de load balancer de verandering detecteren en de Redis server wordt gemarkeerd als down. De vlag -t is het aantal seconden dat Farm Guardian wacht op een Redis-serverreactie en als de time-out wordt bereikt zonder te reageren, wordt de Redis-server gemarkeerd als down. Aan de andere kant, zodra de status van de Redis-server is hersteld, wordt deze weer als up.

Maar voordat u de Farm Guardian voor deze specifieke boerderij wijzigt, gaat u naar Monitoring> Farmguardian en klik vervolgens op Actie> Farmguardian maken.

Kies een beschrijvende naam voor uw nieuwe Redis Sentinel-gezondheidscontrole, bijvoorbeeld, check_redis_master zoals in het voorbeeld, kies nu check_tcp in het dossier Farmguardian om te kopiëren en klik op creëren zoals hieronder aangegeven.

Kopieer ten slotte de bovengenoemde opdracht in de commando parameter en voer de configuratie uit zoals hieronder getoond.

Klik op Verzenden.

Selecteer nu deze nieuwe Farm Guardian geavanceerde gezondheidscontrole in de virtuele service van Redis. Ga terug naar LSLB> Boerderijen, naar de boerderij gemaakt met naam RedisFarm, Diensten tab. Selecteer ten slotte de check_redis_master commando net gemaakt onder Health Checks voor backend.

Klik op bijwerken de boerderij en nu Redis zal volledig beschikbaar zijn.

Referenties

https://redis.io/topics/sentinel
https://redis.io/topics/cluster-tutorial

Delen op:

Documentatie onder de voorwaarden van de GNU-licentie voor vrije documentatie.

Was dit artikel behulpzaam?

Gerelateerde artikelen