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 aufvolatile-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