Looker mantiene una caché como parte de cada instancia. La caché predeterminada de Looker es una solución de almacenamiento en caché personalizada que se basa en varias capas: en memoria, en disco local y en disco remoto. La base de datos interna de Looker se usa como índice que identifica dónde se encuentran los objetos almacenados en caché en el sistema.
Si alojas tu propia instancia de Looker, puedes configurar Looker para que use una caché de Redis alojada por separado. Una caché de Redis puede ofrecer las siguientes ventajas:
- Recuperación de caché mejorada: la principal mejora se producirá en los tiempos de recuperación de caché, que serán más uniformes. A medida que aumenta el número de nodos de un clúster de Looker, la comunicación entre nodos puede afectar al rendimiento de la caché. La nueva arquitectura de caché de Redis consolida la caché, lo que da como resultado tiempos de recuperación de la caché coherentes, independientemente del tamaño de tu clúster de Looker.
- Menos carga: además, la caché se encuentra en un nivel independiente de tu instancia de Looker, lo que reduce la carga de la instancia de Looker.
- Escalabilidad: el uso de una caché de Redis también permite que la caché se escale de forma independiente de tu instancia de Looker.
Requisitos
Looker admite las versiones 4.0.x, 5.0.x y 7.2.x de Redis. Para usar una caché de Redis con Looker, tu instancia de Redis debe cumplir los siguientes requisitos:
- La instancia de Redis debe ser accesible desde la instancia de Looker.
- La instancia de Redis no debe ser un clúster. Sin embargo, puedes usar una instancia de réplica para conseguir una alta disponibilidad.
- El tamaño de la caché de Redis debe ser aproximadamente igual al tamaño de la caché de Looker. De forma predeterminada, la caché de Looker es de 2 GB por nodo, por lo que, si tienes un clúster de Looker de tres nodos, se recomienda una caché de Redis de 6 GB.
- La configuración de
maxmemory-policy
de Redis debe servolatile-lru
. - Deberás inhabilitar la autenticación de Redis. Todos los datos almacenados en Redis se cifran en la instancia de Looker antes de enviarse al servidor de Redis.
- Puedes usar una opción de Redis alojada en AWS ElastiCache o Google Memorystore, siempre que no sea una configuración de clúster de Redis.
Además, para usar Redis en Looker, es necesario el sistema de cifrado GCM de Looker. Debes actualizar el cifrado de las instancias que usen el cifrado antiguo antes de habilitar Redis. Si intentas habilitar Redis sin el cifrado de GCM, Looker no se iniciará y mostrará un mensaje de error similar al siguiente:
2020-01-23 10:28:44.253 -0800 [ERROR|007e4|cache] :: Must enable GCM encryption to use Redis caching
Para obtener instrucciones sobre cómo cambiar de un cifrado antiguo al cifrado GCM, consulta la página de documentación Migrar al cifrado AES-256 GCM.
Definir una variable de entorno para habilitar la caché de Redis
Para habilitar la caché de Redis, debes definir la variable de entorno LOOKER_REDIS_CACHE_DISCOVERY
para que apunte a la URL de conexión de Redis y, a continuación, reiniciar por completo tu instancia de Looker, incluidos todos los nodos del clúster. Te recomendamos que apagues el servidor por completo, modifiques el entorno y los scripts de inicio según sea necesario para incluir la variable de entorno y, a continuación, inicies todos los nodos.
Para cerrar Looker, ejecuta los siguientes comandos en cada nodo:
cd looker
./looker stop
Por ejemplo, si tienes una instancia local de Redis en el mismo host en el puerto predeterminado, define la variable de entorno LOOKER_REDIS_CACHE_DISCOVERY
de la siguiente manera:
export LOOKER_REDIS_CACHE_DISCOVERY=redis://localhost:6379
A continuación, reinicia Looker:
./looker start
Verificar que la caché de Redis esté habilitada
Para determinar si tu caché de Redis está habilitada, busca entradas en tu registro de Looker. Debería haber entradas de registro similares a las siguientes:
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