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

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

如果您自行托管 Looker 实例,可以选择将 Looker 配置为使用单独托管的 Redis 缓存。Redis 缓存可以提供以下优势:

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

要求

Looker 支持 Redis 版本 4.0.x、5.0.x 和 7.2.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