Redis-Cache auf einer vom Kunden gehosteten Instanz aktivieren

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