Activer un cache Redis sur une instance hébergée par un client

Looker gère un cache dans chaque instance. Le cache par défaut de Looker est une solution de mise en cache personnalisée basée sur plusieurs couches: en mémoire, disque local et disque distant. La base de données interne de Looker sert d'index qui identifie l'emplacement des objets mis en cache dans le système.

Si vous hébergez votre propre instance Looker, vous pouvez éventuellement configurer Looker pour qu'il utilise un cache Redis hébergé séparément. Un cache Redis peut offrir les avantages suivants:

  • Récupération du cache améliorée : la principale amélioration concerne la cohérence des temps de récupération du cache. À mesure que le nombre de nœuds d'un cluster Looker augmente, la communication entre les nœuds peut dégrader les performances du cache. La nouvelle architecture de cache Redis consolide le cache, ce qui permet d'obtenir des temps de récupération cohérents, quelle que soit la taille de votre cluster Looker.
  • Moins de charge : de plus, le cache se trouve dans un niveau distinct de votre instance Looker, ce qui réduit la charge sur l'instance Looker.
  • Évolutivité : l'utilisation d'un cache Redis permet également d'ajuster le cache indépendamment de votre instance Looker.

Conditions requises

Looker est compatible avec les versions 4.0.x et 5.0.x de Redis. Pour utiliser un cache Redis avec Looker, votre instance Redis doit répondre aux exigences suivantes:

  • L'instance Redis doit être accessible à partir de l'instance Looker.
  • L'instance Redis ne doit pas être un cluster. Toutefois, vous pouvez utiliser une configuration principale/instance répliquée pour la haute disponibilité.
  • La taille du cache Redis doit être approximativement égale à celle de votre cache Looker. Par défaut, le cache Looker est de 2 Go par nœud. Par conséquent, si vous disposez d'un cluster Looker à trois nœuds, un cache Redis de 6 Go est recommandé.
  • La configuration Redis maxmemory-policy doit être définie sur volatile-lru.
  • Vous devez désactiver toute authentification Redis. Toutes les données stockées dans Redis sont chiffrées dans l'instance Looker avant d'être envoyées au serveur Redis.
  • Vous pouvez utiliser une option Redis hébergée sur AWS ElastiCache ou Google MemoryStore, à condition qu'il ne s'agisse pas d'une configuration de cluster Redis.

De plus, le système de chiffrement GCM de Looker est nécessaire pour utiliser Redis dans Looker. Vous devez mettre à jour le chiffrement pour les instances qui utilisent l'ancien chiffrement avant d'activer Redis. Si vous tentez d'activer Redis sans chiffrement GCM, Looker ne démarrera pas et un message d'erreur semblable à celui-ci ne s'affichera:

2020-01-23 10:28:44.253 -0800 [ERROR|007e4|cache] :: Must enable GCM encryption to use Redis caching

Pour savoir comment passer de l'ancien chiffrement au chiffrement GCM, consultez la page de documentation Passer au chiffrement AES-256.

Définir une variable d'environnement pour activer le cache Redis

Pour activer le cache Redis, vous devez définir la variable d'environnement LOOKER_REDIS_CACHE_DISCOVERY de sorte qu'elle pointe vers l'URL de connexion Redis, puis redémarrer complètement votre instance Looker, y compris tous les nœuds du cluster. Nous vous recommandons d'arrêter complètement votre serveur, de modifier votre environnement et vos scripts de démarrage si nécessaire pour inclure la variable d'environnement, puis de démarrer tous les nœuds.

Pour arrêter Looker, exécutez les commandes suivantes sur chaque nœud:

cd looker
./looker stop

Ensuite, par exemple, si vous disposez d'une instance Redis locale sur le même hôte et sur le port par défaut, définissez la variable d'environnement LOOKER_REDIS_CACHE_DISCOVERY comme suit:

export LOOKER_REDIS_CACHE_DISCOVERY=redis://localhost:6379

Redémarrez ensuite Looker:

./looker start

Vérifier que le cache Redis est activé

Pour déterminer si le cache Redis est activé, recherchez les entrées dans votre journal Looker. Des entrées de journal semblables à celles-ci doivent s'afficher:

2021-06-11 16:54:41.532 +0000 [INFO|007e4|RedissonClientPool] :: Creating client for redis://localhost:6379/
...
2021-06-11 16:54:42.802 +0000 [INFO|007e4|cache] :: Creating render_cache DataShelf: redis