Redis-Cache auf einer vom Kunden gehosteten Instanz aktivieren

Looker unterhält einen Cache als Teil jeder Instanz. Der Standardcache von Looker ist eine benutzerdefinierte Caching-Lösung, die auf mehreren Ebenen basiert: In-Memory, lokale Festplatte und Remote-Laufwerk. Die interne Looker-Datenbank wird als Index verwendet, der angibt, wo sich im System zwischengespeicherte Objekte befinden.

Wenn Sie Ihre eigene Looker-Instanz hosten, können Sie Looker optional so konfigurieren, dass ein separat gehosteter Redis verwendet wird. Ein Redis-Cache kann die folgenden Vorteile bieten:

  • Verbesserter Cache-Abruf: Die wichtigste Verbesserung besteht in konsistenten Cache-Abrufzeiten. Wenn die Anzahl der Knoten in einem Looker-Cluster zunimmt, kann die knotenübergreifende Kommunikation die Cache-Leistung beeinträchtigen. Die neue Redis-Cache-Architektur konsolidiert den Cache, was zu konsistenten Cache-Abrufzeiten unabhängig von der Größe Ihres Looker-Clusters führt.
  • Geringere Last: Der Cache befindet sich außerdem in einer anderen Stufe als Ihre Looker-Instanz. Dadurch wird die Looker-Instanz weniger belastet.
  • Skalierbarkeit: Durch die Verwendung eines Redis-Caches kann der Cache unabhängig von der Looker-Instanz skaliert werden.

Voraussetzungen

Looker unterstützt die Redis-Versionen 4.0.x und 5.0.x. Damit Sie einen Redis-Cache mit Looker verwenden können, muss Ihre Redis-Instanz die folgenden Anforderungen erfüllen:

  • Die Redis-Instanz muss über die Looker-Instanz zugänglich sein.
  • Die Redis-Instanz darf kein Cluster sein. Für Hochverfügbarkeit können Sie jedoch eine Primär-/Replikatkonfiguration verwenden.
  • Die Größe des Redis-Cache sollte ungefähr der Größe Ihres Looker-Caches entsprechen. Standardmäßig beträgt der Looker-Cache 2 GB pro Knoten. Wenn Sie also einen Looker-Cluster mit drei Knoten haben, wird ein Redis-Cache mit 6 GB empfohlen.
  • Die Redis-Konfiguration für maxmemory-policy sollte auf volatile-lru festgelegt sein.
  • Sie müssen die Redis-Authentifizierung deaktivieren. Alle in Redis gespeicherten Daten werden in der Looker-Instanz verschlüsselt, bevor sie an den Redis-Server gesendet werden.
  • Sie können eine Redis-Option verwenden, die auf einem AWS ElastiCache oder Google MemoryStore gehostet wird, solange es sich nicht um eine Redis-Clusterkonfiguration handelt.

Darüber hinaus ist für die Verwendung von Redis in Looker das GCM-Verschlüsselungssystem von Looker erforderlich. Sie müssen die Verschlüsselung für Instanzen mit Legacy-Verschlüsselung aktualisieren, bevor Sie Redis aktivieren. Wenn Sie versuchen, Redis ohne GCM-Verschlüsselung zu aktivieren, wird Looker nicht mit einer Fehlermeldung wie der folgenden starten:

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

Eine Anleitung zum Upgrade von der alten auf die GCM-Verschlüsselung finden Sie auf der Dokumentationsseite Zur AES-256-GCM-Verschlüsselung migrieren.

Umgebungsvariable zum Aktivieren des Redis-Cache festlegen

Zum Aktivieren des Redis-Cache müssen Sie die Umgebungsvariable LOOKER_REDIS_CACHE_DISCOVERY so festlegen, dass sie auf die Redis-Verbindungs-URL verweist. Anschließend starten Sie Ihre Looker-Instanz vollständig neu, einschließlich aller Knoten im Cluster. Wir empfehlen, dass Sie Ihren Server vollständig herunterfahren, Ihre Umgebung und die Startup-Skripts nach Bedarf ändern, um die Umgebungsvariable einzubinden, und dann alle Knoten starten.

Führen Sie zum Herunterfahren von Looker auf jedem Knoten die folgenden Befehle aus:

cd looker
./looker stop

Wenn Sie dann beispielsweise eine lokale Redis-Instanz auf demselben Host am Standardport haben, legen Sie die Umgebungsvariable LOOKER_REDIS_CACHE_DISCOVERY so fest:

export LOOKER_REDIS_CACHE_DISCOVERY=redis://localhost:6379

Starten Sie dann Looker neu:

./looker start

Prüfen, ob der Redis-Cache aktiviert ist

Suchen Sie in Ihrem Looker-Log nach Einträgen, um festzustellen, ob der Redis-Cache aktiviert ist. Die Logeinträge sollten in etwa so aussehen:

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