Redis-Cache auf einer vom Kunden gehosteten Instanz aktivieren

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

Wenn Sie eine eigene Looker-Instanz hosten, können Sie Looker optional so konfigurieren, dass ein separat gehosteter Redis-Cache verwendet wird. Ein Redis-Cache bietet folgende Vorteile:

  • Verbesserter Cache-Abruf: Die primäre Verbesserung erfolgt durch konsistente Cache-Abrufzeiten. Wenn die Anzahl der Knoten in einem Looker-Cluster zunimmt, kann die knoteninterne Kommunikation die Cache-Leistung beeinträchtigen. Die neue Redis-Cache-Architektur konsolidiert den Cache. Dies führt zu einer konsistenten Cache-Abrufzeit, unabhängig von der Größe des Looker-Clusters.
  • Weniger Last: Der Cache befindet sich getrennt von der Looker-Instanz, wodurch die Looker-Instanz weniger belastet 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. 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 des Looker-Caches entsprechen. Der Looker-Cache beträgt standardmäßig 2 GB pro Knoten. Wenn Sie also einen Looker-Cluster mit drei Knoten verwenden, wird ein Redis-Cache von 6 GB empfohlen.
  • Die Redis-Konfiguration maxmemory-policy sollte auf volatile-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 in einem AWS ElastiCache oder Google MemoryStore gehostet wird, solange es sich nicht um eine Redis-Clusterkonfiguration handelt.

Darüber hinaus ist das GCM-Verschlüsselungssystem von Looker erforderlich, um Redis in Looker verwenden zu können. 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, wird in Looker keine Fehlermeldung wie diese angezeigt:

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

Eine Anleitung für das Upgrade von der alten auf die GCM-Verschlüsselung finden Sie auf der Dokumentationsseite Zu AES-256-GCM-Verschlüsselung migrieren.

Umgebungsvariable festlegen, um den Redis-Cache zu aktivieren

Zum Aktivieren des Redis-Caches müssen Sie die Umgebungsvariable LOOKER_REDIS_CACHE_DISCOVERY festlegen, die auf die Redis-Verbindungs-URL verweist. Starten Sie dann Ihre Looker-Instanz einschließlich aller Knoten im Cluster neu. Wir empfehlen Ihnen, Ihren Server vollständig herunterzufahren, Ihre Umgebungs- und Startskripts nach Bedarf zu ändern, um die Umgebungsvariable einzuschließen, und dann alle Knoten zu starten.

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

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

Aktivierung des Redis-Cache prüfen

Suchen Sie im Looker-Log nach Einträgen, um den Redis-Cache zu aktivieren. Der Logeintrag sollte 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