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 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 utiliser 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 sera des temps de récupération du cache cohérents. À 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 plus faible : le cache se situe à un niveau distinct de votre instance Looker, ce qui entraîne une charge réduite 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 assurer 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 survolatile-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.
De plus, le système de chiffrement GCM de Looker est nécessaire 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 le 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 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
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 l'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 avez 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
Redémarrez ensuite Looker:
./looker start
Vérifier que le cache Redis est activé
Pour savoir si le cache Redis est activé, recherchez des entrées dans votre journal Looker. Des entrées de journal devraient ressembler à ceci:
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