在客户托管的实例上启用 Redis 缓存

Looker 为每个实例保留一个缓存。Looker 的默认缓存是一种基于多个层的自定义缓存解决方案:内存中、本地磁盘和远程磁盘。Looker 内部数据库用作索引,用于标识缓存对象在系统中的位置。

如果您要托管自己的 Looker 实例,则可以选择将 Looker 配置为使用单独托管的 Redis 缓存。Redis 缓存具有以下优势:

  • 改进了缓存检索 - 主要改进在于一致的缓存检索时间。随着 Looker 集群中节点数量的增加,节点间通信可能会降低缓存性能。新的 Redis 缓存架构会合并缓存,因此无论 Looker 集群的大小如何,您都可以获得一致的缓存检索时间。
  • 负载较低 - 此外,缓存位于与 Looker 实例不同的层级中,因而可减少 Looker 实例的负载。
  • 可扩缩性 - 使用 Redis 缓存还允许缓存独立于 Looker 实例进行扩缩。

使用要求

Looker 支持 Redis 4.0.x 版和 5.0.x 版。如需将 Redis 缓存与 Looker 搭配使用,您的 Redis 实例必须满足以下要求:

  • Redis 实例必须可从 Looker 实例访问。
  • Redis 实例不能是集群;但是,您可以使用主/副本配置来实现高可用性。
  • Redis 缓存的大小应大致等于 Looker 缓存的大小。默认情况下,Looker 缓存为每个节点 2 GB;因此,如果您有三节点 Looker 集群,建议使用 6 GB 的 Redis 缓存。
  • Redis maxmemory-policy 配置应设置为 volatile-lru
  • 您需要停用所有 Redis 身份验证。存储在 Redis 中的所有数据在发送到 Redis 服务器之前,会在 Looker 实例中加密。
  • 您可以使用托管在 AWS ElastiCache 或 Google MemoryStore 上的 Redis 选项,只要它不是 Redis 集群配置即可。

此外,要在 Looker 中使用 Redis,还需 Looker 的 GCM 加密系统。在启用 Redis 之前,您必须先更新使用旧版加密功能的实例的加密设置。如果您尝试在没有 GCM 加密的情况下启用 Redis,Looker 将无法启动并显示类似如下的错误消息:

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

如需了解如何从旧版加密升级到 GCM 加密,请参阅迁移到 AES-256 GCM 加密文档页面。

设置环境变量以启用 Redis 缓存

如需启用 Redis 缓存,您必须将 LOOKER_REDIS_CACHE_DISCOVERY 环境变量设置为指向 Redis 连接网址,然后完全重启 Looker 实例,包括集群中的所有节点。我们建议您完全关闭服务器,根据需要修改环境和启动脚本以包含该环境变量,然后启动所有节点。

如需关停 Looker,请在每个节点上运行以下命令:

cd looker
./looker stop

然后,举例来说,如果同一主机上的默认端口上有一个本地 Redis 实例,请按如下方式设置 LOOKER_REDIS_CACHE_DISCOVERY 环境变量:

export LOOKER_REDIS_CACHE_DISCOVERY=redis://localhost:6379

然后重启 Looker:

./looker start

验证是否已启用 Redis 缓存

如需确定您的 Redis 缓存是否已启用,请在 Looker 日志中查找条目。您应该有类似于以下内容的日志条目:

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