Looker verwaltet für jede Instanz einen Cache. Der Standardcache von Looker ist eine benutzerdefinierte Caching-Lösung, die auf mehreren Ebenen basiert: In-Memory-, lokalem Laufwerk und Remote-Laufwerk. Die interne Looker-Datenbank wird als Index verwendet, der angibt, wo sich im System gespeicherte Objekte befinden.
Wenn Sie Ihre eigene Looker-Instanz hosten, können Sie Looker optional so konfigurieren, dass ein separat gehosteter Redis-Cache verwendet wird. Ein Redis-Cache kann die folgenden Vorteile bieten:
- Verbesserter Cache-Abruf: Die Hauptverbesserung besteht in gleichbleibenden Cache-Abrufzeiten. Wenn die Anzahl der Knoten in einem Looker-Cluster zunimmt, kann die Cacheleistung durch die Kommunikation zwischen den Knoten beeinträchtigt werden. Die neue Redis-Cache-Architektur konsolidiert den Cache, was zu einheitlichen Cache-Abrufzeiten führt, unabhängig von der Größe Ihres Looker-Clusters.
- Weniger Last: Außerdem befindet sich der Cache in einer separaten Ebene von Ihrer Looker-Instanz, was zu einer geringeren Auslastung der Looker-Instanz führt.
- Skalierung: Mit einem Redis-Cache kann der Cache unabhängig von Ihrer 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:
- Auf die Redis-Instanz muss über die Looker-Instanz zugegriffen werden können.
- Die Redis-Instanz darf kein Cluster sein. Sie können jedoch eine Primär-/Replikatkonfiguration für Hochverfügbarkeit verwenden.
- Die Größe des Redis-Cache sollte ungefähr der Größe Ihres Looker-Caches entsprechen. Standardmäßig hat 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
maxmemory-policy
sollte aufvolatile-lru
festgelegt sein. - Sie müssen jede 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 einem Google MemoryStore gehostet wird, sofern es sich nicht um eine Redis-Clusterkonfiguration handelt.
Außerdem ist das GCM-Verschlüsselungssystem von Looker erforderlich, um Redis in Looker zu verwenden. Sie müssen die Verschlüsselung für Instanzen aktualisieren, die die Legacy-Verschlüsselung verwenden, bevor Sie Redis aktivieren. Wenn Sie versuchen, Redis ohne GCM-Verschlüsselung zu aktivieren, kann Looker nicht gestartet werden. Sie erhalten dann eine Fehlermeldung wie die folgende:
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 bisherigen Verschlüsselung auf die GCM-Verschlüsselung finden Sie auf der Dokumentationsseite Migration zur AES-256-GCM-Verschlüsselung.
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, und dann die Looker-Instanz einschließlich aller Knoten im Cluster vollständig neu starten. Wir empfehlen, den Server vollständig herunterzufahren, die Umgebung und die Startskripts nach Bedarf anzupassen, sodass die Umgebungsvariable enthalten ist, und dann alle Knoten zu starten.
Führen Sie die folgenden Befehle auf jedem Knoten aus, um Looker herunterzufahren:
cd looker
./looker stop
Wenn Sie beispielsweise eine lokale Redis-Instanz auf demselben Host und 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
Aktivierung des Redis-Cache prüfen
Ob der Redis-Cache aktiviert ist, sehen Sie in den Einträgen im Looker-Log. Es sollten Logeinträge 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