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

Looker 为每个实例维护一个cache。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;因此,如果您有 3 个节点的 Looker 集群,建议使用 6 GB 的 Redis 缓存。
  • Redis maxmemory-policy 配置应设置为 volatile-lru
  • 您需要停用任何 Redis 身份验证。存储在 Redis 中的所有数据都会先在 Looker 实例中加密,然后再发送到 Redis 服务器。
  • 您可以使用托管在 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