Looker unterhält jeden Cache als Teil jeder Instanz. Der Standard-Cache von Looker ist eine benutzerdefinierte Caching-Lösung, die auf mehreren Ebenen basiert: In-Memory, lokaler Datenträger und Remote-Laufwerk. Die interne Datenbank von Looker wird als Index verwendet, der angibt, wo sich im Cache gespeicherte Objekte im System befinden.
Wenn Sie eine eigene Looker-Instanz hosten, können Sie bei Bedarf Looker für die Verwendung eines separat gehosteten Redis-Cache konfigurieren. Ein Redis-Cache bietet folgende Vorteile:
- Verbesserter Cache-Abruf: Die primäre Verbesserung ist der konsistente Cache-Abruf. 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 fasst den Cache zusammen, was unabhängig von der Größe des Looker-Clusters zu konsistenten Cache-Abrufzeiten führt.
- Weniger Last: Der Cache befindet sich außerdem in einer von der Looker-Instanz getrennten Ebene, wodurch die Looker-Instanz weniger beansprucht wird.
- Skalierbarkeit: 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. Ihre Redis-Instanz muss die folgenden Anforderungen erfüllen, um einen Redis-Cache mit Looker verwenden zu können:
- Die Redis-Instanz muss über die Looker-Instanz zugänglich sein.
- Die Redis-Instanz darf kein Cluster sein. Sie können jedoch eine primäre/Replikatkonfiguration für Hochverfügbarkeit verwenden.
- Die Größe des Redis-Cache sollte ungefähr der Größe Ihres Looker-Caches entsprechen. Der Looker-Cache beträgt standardmäßig 2 GB pro Knoten. Wenn Sie also einen Looker-Cluster mit drei Knoten haben, wird ein Redis-Cache von 6 GB empfohlen.
- Die Redis-Konfiguration
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 in einem AWS ElastiCache oder Google MemoryStore gehostet wird, sofern es sich nicht um eine Redis-Clusterkonfiguration handelt.
Zusätzlich 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 aktualisieren, die die alte Verschlüsselung verwenden, bevor Sie Redis aktivieren. Wenn Sie versuchen, Redis ohne GCM-Verschlüsselung zu aktivieren, schlägt Looker mit einer Fehlermeldung wie der folgenden fehl:
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 AES-Verschlüsselung finden Sie auf der Dokumentationsseite Von AES-256 zur 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. Führen Sie dann einen vollständigen Neustart der Looker-Instanz aus, einschließlich aller Knoten im Cluster. Wir empfehlen, den Server vollständig herunterzufahren, die Umgebung und die Startskripts nach Bedarf anzupassen und die Umgebungsvariable einzuschließen, 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 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 im Looker-Log nach Einträgen, um herauszufinden, ob Ihr Redis-Cache aktiviert ist. Die Einträ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