redis_docker

Les sentinelles Redis avec docker-compose

Spread the love

Dans cet article, nous allons voir comment configurer Redis avec les réplications main / repliquat et avec de la haute disponibilité grâce à Redis Sentinel. Nous allons faire cette configuration sur docker-compose.
Redis est une base de données clé/valeur, très populaire parmi les développeurs pour la mise en cache.
Redis Sentinel offre une haute disponibilité pour Redis. Concrètement, cela signifie qu’en utilisant Sentinel, vous pouvez créer un déploiement Redis qui résiste sans intervention humaine à certains types de pannes.
Docker-compose est un outil permettant de définir et d’exécuter des applications Docker multi-conteneurs. Avec Compose, vous utilisez un fichier YAML pour configurer les services de votre application. Ensuite, avec une seule commande, vous créez et démarrez tous les services à partir de votre configuration.

Comment Redis Sentinel fonctionne

Schéma Redis Sentinel main répliquât

Redis Sentinel vérifie toujours les instances MAIN et REPLICATE dans le cluster Redis. Si Redis Sentinel détecte une défaillance dans le nÅ“ud MAIN dans un cluster donné, il démarrera un processus de basculement. Par conséquent, Redis Sentinel choisit une instance REPLICATE et la promeut en MAIN.

En concret, quand le Redis MAIN tombe, les sentinelles vont le détecter et vont élire le nouveau MAIN. Votre application ne verra pas la différence, car elle communique avec les sentinelles.

Redis Sentinel est très robuste car c’est un système distribué. Plusieurs sentinelles doivent s’accorder pour la détection de l’indispo de Redis MAIN. Le quorum est là pour l’élection du nouveau MAIN.

La valeur du quorum correspond au nombre de sentinelles qui doivent s’accorder sur le fait que le MAIN n’est pas joignable. Cependant, le quorum n’est utilisé que pour détecter l’échec. Afin d’effectuer réellement un basculement, l’une des sentinelles doit être élue chef de file pour le basculement et être autorisée à continuer. Cela ne se produit qu’avec le vote de la majorité des processus Redis Sentinel.

Schéma Redis config serveur
Exemple d’installation sur une infrastructure

Configuration Redis docker-compose

version: '3.7'
services:
    redis-main:
        image: redis:alpine
        command: redis-server --requirepass ${REDIS_PASS}
        networks:
            kiora_net:
                ipv4_address: 172.22.0.4
        restart: always

    redis-replicate:
        image: redis:alpine
        command: redis-server --masterauth ${REDIS_PASS} --slaveof 172.22.0.4 6379
        links: 
            - redis-main
        networks:
            - kiora_net

    redis-sentinel:
        image: redis
        command: >
            bash -c "echo 'port 26379' > sentinel.conf &&
            echo 'dir /tmp' >> sentinel.conf &&
            echo 'sentinel monitor primary 172.22.0.4 6379 2' >> sentinel.conf &&
            echo 'sentinel down-after-milliseconds primary 5000' >> sentinel.conf &&
            echo 'sentinel parallel-syncs primary 1' >> sentinel.conf &&
            echo 'sentinel failover-timeout primary 5000' >> sentinel.conf &&
            cat sentinel.conf &&
            redis-server sentinel.conf --sentinel"
        ports: 
            - "26379-26385:26379"
        links:
            - redis-main
            - redis-replicate
        networks:
            - kiora_net
 
networks:
    kiora_net:
        driver: bridge
        ipam:
            config:
                - subnet: 172.22.0.0/24

Ici nous allons créer 3 différents services :

  • redis-main: qui va démarrer le Redis MAIN, avec un mot de passe
  • redis-replicate: qui va démarrer un répliquât et se connecter au Redis MAIN avec un mot de passe
  • redis-sentinel: qui va démarrer un Redis sentinel et se connecter au Redis MAIN.

Grâce à docker-compose, nous allons générer plusieurs instances de répliquâts et de sentinelles :
docker-compose up -d --scale redis-replicat=2 --scale redis-sentinel=3

Et voilà, vous avez une configuration 1 main, 2 répliquâts et 3 sentinelles.

chevron_left
chevron_right

Laisser un commentaire

%d blogueurs aiment cette page :