Abilitazione di una cache Redis su un'istanza ospitata dal cliente

Looker conserva una cache come parte di ogni istanza. La cache predefinita di Looker è una soluzione di memorizzazione nella cache personalizzata basata su diversi livelli: in memoria, disco locale e disco remoto. Il database interno di Looker viene utilizzato come indice per individuare la posizione nel sistema degli oggetti memorizzati nella cache.

Se ospiti la tua istanza Looker, puoi facoltativamente configurarla in modo che utilizzi una cache Redis ospitata separatamente. La cache Redis offre i seguenti vantaggi:

  • Miglioramento del recupero della cache: il miglioramento principale consisterà in tempi di recupero della cache coerenti. Con l'aumento del numero di nodi in un cluster Looker, la comunicazione tra nodi può peggiorare le prestazioni della cache. La nuova architettura della cache Redis consente di consolidare la cache, il che si traduce in tempi di recupero della cache coerenti, indipendentemente dalle dimensioni del cluster Looker.
  • Meno carico: inoltre, la cache si trova in un livello separato rispetto all'istanza di Looker, portando a un carico minore sull'istanza di Looker.
  • Scalabilità: l'utilizzo di una cache Redis consente anche di scalare la cache indipendentemente dall'istanza di Looker.

Requisiti

Looker supporta le versioni Redis 4.0.x e 5.0.x. Per utilizzare una cache Redis con Looker, l'istanza Redis deve soddisfare i seguenti requisiti:

  • L'istanza Redis deve essere accessibile dall'istanza Looker.
  • L'istanza Redis non deve essere un cluster; tuttavia, puoi utilizzare una configurazione principale/replica per l'alta disponibilità.
  • Le dimensioni della cache Redis devono corrispondere approssimativamente alle dimensioni della cache Looker. Per impostazione predefinita, la cache di Looker è di 2 GB per nodo; quindi, se hai un cluster Looker a tre nodi, è consigliata una cache Redis da 6 GB.
  • La configurazione Redis maxmemory-policy deve essere impostata su volatile-lru.
  • Dovrai disattivare qualsiasi autenticazione Redis. Tutti i dati archiviati in Redis sono criptati nell'istanza di Looker prima di essere inviati al server Redis.
  • Puoi utilizzare un'opzione Redis ospitata su AWS ElastiCache o Google MemoryStore, a condizione che non sia una configurazione del cluster Redis.

Inoltre, per utilizzare Redis in Looker è necessario il sistema di crittografia GCM di Looker. Devi aggiornare la crittografia per le istanze che usano la crittografia precedente prima di abilitare Redis. Se tenti di attivare Redis senza crittografia GCM, Looker non riesce a iniziare con un messaggio di errore simile al seguente:

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

Per istruzioni sull'upgrade dalla crittografia precedente alla crittografia GCM, consulta la pagina della documentazione Migrazione alla crittografia AES-256 GCM.

Impostazione di una variabile di ambiente per abilitare la cache Redis

Per abilitare la cache Redis, devi impostare la variabile di ambiente LOOKER_REDIS_CACHE_DISCOVERY in modo che punti all'URL di connessione Redis e quindi eseguire un riavvio completo dell'istanza di Looker, inclusi tutti i nodi nel cluster. Ti consigliamo di arrestare completamente il server, modificare gli script di ambiente e di avvio in base alle necessità per includere la variabile di ambiente e quindi avviare tutti i nodi.

Per arrestare Looker, esegui questi comandi su ciascun nodo:

cd looker
./looker stop

Quindi, ad esempio, se hai un'istanza Redis locale sullo stesso host alla porta predefinita, imposta la variabile di ambiente LOOKER_REDIS_CACHE_DISCOVERY nel seguente modo:

export LOOKER_REDIS_CACHE_DISCOVERY=redis://localhost:6379

Quindi riavvia Looker:

./looker start

Verifica che la cache Redis sia abilitata

Per determinare se la cache Redis è abilitata, cerca le voci nel log di Looker. Dovrebbero essere visualizzate voci di log simili alle seguenti:

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