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

Looker conserve un cache pour 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 est utilisée comme indice 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 :

  • Amélioration de la récupération du cache : l'amélioration principale consistera à obtenir des temps de récupération du cache cohérents. À mesure que le nombre de nœuds dans 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 réduit les délais de récupération du cache, quelle que soit la taille de votre cluster Looker.
  • Charge plus faible : 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 de faire évoluer 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 depuis l'instance Looker.
  • L'instance Redis ne doit pas être un cluster. Toutefois, vous pouvez utiliser une configuration principale/d'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 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 un AWS ElastiCache ou un 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 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 et affichera 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 Migrer vers le 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 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

Par exemple, si vous disposez d'une instance Redis locale sur le même hôte au 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 votre cache Redis est activé, recherchez des entrées dans le 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