Overzicht #
Redis is een open-source in-memory datastructurenopslag die kan worden gebruikt als message broker, cache en key-value database. Het ondersteunt verschillende datastructuren: hashes, lijsten, sets, gesorteerde sets, bitmaps, geospatiale indexen, hyperloglogs, enzovoort.
Wat Redis uniek maakt, is dat het zowel als opslag als cache kan worden beschouwd. Het is zo ontworpen dat gegevens worden gewijzigd en/of uit het hoofdgeheugen van de computer worden gelezen.
Redis biedt onder andere hoge beschikbaarheid via Redis Sentinel en automatische partitionering via Redis Cluster . Daarnaast beschikt Redis over een replicatiemechanisme waarmee slave-instanties exacte kopieën van master-instanties kunnen zijn. De slave maakt automatisch opnieuw verbinding met de master telkens wanneer de verbinding verbroken wordt, met als doel een exacte kopie ervan te zijn.
Omdat Redis Sentinel een hoge beschikbaarheid voor Redis biedt, kan het in veel gevallen automatisch storingen verwerken zonder menselijke tussenkomst. Daarnaast voert het ook andere taken uit, zoals monitoring en meldingen, en fungeert het als een configuratieprovider voor clients.
Maar wat gebeurt er als Sentinel detecteert dat een Redis-server niet beschikbaar is? In dit artikel ontdekken we hoe je een complete, zeer beschikbare virtuele service voor Redis kunt creëren.
Houd er rekening mee dat deze configuratie ook kan worden uitgevoerd als uw Redis-server geen Sentinel gebruikt voor monitoring.
Redis-load balancing-omgeving #
Het scenario dat we in dit artikel willen bereiken, wordt in het onderstaande diagram weergegeven.
Redis Sentinel controleert de status van alle Redis-knooppunten en wijzigt de rol van de Redis-server zodra er een fout wordt gedetecteerd.
De load balancer controleert de status ook, maar doet dit periodiek, om de paar seconden. In sommige gevallen detecteert Sentinel het probleem, maar kan het enkele seconden duren voordat de load balancer het opmerkt. Dit kan ertoe leiden dat de balancer verzoeken naar de verkeerde master stuurt, namelijk de master die net is uitgevallen maar door Sentinel is overgeschakeld.
RELIANOID Een oplossing hiervoor is dat de L4-farm periodiek controles uitvoert. Aan de andere kant is er ook de flow die naar de backend wordt gestuurd en die geen eerdere controle bevat. Wanneer de farm guardian merkt dat de backend niet reageert, geeft hij een alarm af, wat aangeeft dat de flow niet deze kant op zou moeten gaan.
Rekening houdend hiermee hebben we enerzijds de controles en anderzijds de verzoeken. Als de controle mislukt, wordt de flow direct naar een ander knooppunt gestuurd. Ook de lopende verzoeken worden doorgestuurd naar een ander online knooppunt. Dit wordt verder toegelicht in de configuratie.
Redis-configuratie voor load balancing #
Voordat we de farm kunnen instellen, hebben we een virtueel IP-adres nodig. Ga hiervoor naar Netwerk > Virtuele interfaces . Klik vervolgens op Actie > Virtuele interface maken . Selecteer daarna de hoofdinterface , de naam van de virtuele interface en het bijbehorende IP-adres.
Vervolgens moeten we voor de virtuele Redis-server een L4xNAT-farm aanmaken. Ga hiervoor naar LSLB > Farms en klik vervolgens op Actie en Farm aanmaken.
Zodra de beginparameters zijn ingesteld, klikt u op 'Maken' . Ga vervolgens naar het tabblad 'Geavanceerd' en zorg ervoor dat het protocoltype TCP is.
Ga vervolgens naar Services . Hier worden Backends en Farm Guardian ingesteld voor geavanceerde gezondheidscontroles. Zoek eerst de sectie Backends en klik op Acties > Backend toevoegen, zoals hieronder weergegeven:
Redis-bewaking en geavanceerde gezondheidscontrole #
Ten slotte zijn de Farm Guardian-controles nodig om ervoor te zorgen dat we altijd de online node gebruiken, zoals eerder uitgelegd. Hiervoor moeten we het volgende configureren als de Farm Guardian-opdracht:
check_tcp -E -H HOST -p POORT -s 'info replicatie\r\n' -e rol:master -t 3
Waar HOST en PORT worden vervangen door het IP-adres en de poort van de Redis-server van elke backend. De opdracht info replication haalt de informatie van de Redis-server op om te controleren welke master actief is. Verbindingen worden alleen doorgestuurd naar de server als deze de rol 'master' heeft. Zodra Sentinel van rol verandert, detecteert de load balancer dit en wordt de Redis-server als 'down' gemarkeerd. De vlag -t geeft het aantal seconden aan dat Farm Guardian wacht op een reactie van de Redis-server. Als de time-out is bereikt zonder reactie, wordt de Redis-server als 'down' gemarkeerd. Zodra de Redis-server weer actief is, wordt deze weer als 'up' gemarkeerd.
Maar voordat je de Farm Guardian voor deze specifieke boerderij aanpast, ga je naar Monitoring > Farmguardian en klik je vervolgens op Actie > Farmguardian maken.
Kies een beschrijvende naam voor uw nieuwe Redis Sentinel health checker, bijvoorbeeld check_redis_master zoals in het voorbeeld. Selecteer vervolgens check_tcp in het veld Farmguardian om te kopiëren en klik op Maken zoals hieronder weergegeven.
Kopieer tot slot de bovengenoemde opdracht naar de parameter 'Command' en voer de configuratie uit zoals hieronder weergegeven.
Klik op Verzenden.
Selecteer nu deze nieuwe geavanceerde gezondheidscontrole van Farm Guardian in de virtuele Redis-service. Ga terug naar LSLB > Farms , naar de farm die is aangemaakt met de naam RedisFarm , tabblad Services . Selecteer ten slotte de zojuist aangemaakte opdracht check_redis_master onder Gezondheidscontroles voor de backend.
Klik op ' De farm bijwerken ' en Redis zal nu volledig beschikbaar zijn.
Referenties #
https://redis.io/topics/sentinel
https://redis.io/topics/cluster-tutorial






