Activer un cache Redis sur une instance hébergée par le 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, sur disque local et sur 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. Le cache Redis offre les avantages suivants:

  • Amélioration de la récupération du cache : l'amélioration principale sera un temps de récupération du cache cohérent. À 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 se traduit par des temps de récupération de cache cohérents, quelle que soit la taille de votre cluster Looker.
  • Charge réduite : le cache se trouve dans un niveau distinct de l'instance Looker, ce qui réduit la charge sur l'instance Looker.
  • Évolutivité : l'utilisation d'un cache Redis lui permet également d'évoluer 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/d'instance dupliquée pour la haute disponibilité.
  • La taille du cache Redis doit être à peu près égale à la taille 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 devrez 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.

En outre, le système de chiffrement GCM de Looker est requis pour utiliser Redis dans Looker. Vous devez mettre à jour le chiffrement des instances qui utilisent l'ancien chiffrement avant d'activer Redis. Si vous tentez d'activer Redis sans chiffrement GCM, Looker ne démarrera pas avec un message d'erreur semblable à celui-ci:

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 GCM 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 pour 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 les 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

Par exemple, si vous disposez d'une instance Redis locale sur le même hôte 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

Ensuite, redémarrez 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 aux suivantes 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