在客户托管的实例上启用 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 的 GCM 加密系统,才能在 Looker 中使用 Redis。在启用 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