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

Looker gestisce una cache in 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 identificare la posizione degli oggetti memorizzati nella cache nel sistema.

Se la tua istanza di Looker è ospitata, puoi facoltativamente configurarla in modo che utilizzi una cache Redis ospitata separatamente. Una cache Redis può offrire i seguenti vantaggi:

  • Miglioramento del recupero della cache: il miglioramento principale avverrà in tempi di recupero della cache coerenti. Man mano che il numero di nodi in un cluster Looker aumenta, la comunicazione tra nodi può peggiorare le prestazioni della cache. La nuova architettura di cache Redis consolida la cache, il che si traduce in tempi di recupero della cache coerenti, indipendentemente dalle dimensioni del cluster Looker.
  • Meno caricamento: inoltre, la cache si trova in un livello separato rispetto a quello dell'istanza di Looker, il che porta a un carico inferiore sull'istanza di Looker.
  • Scalabilità: l'utilizzo di una cache Redis consente anche di ridimensionare 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/di replica per un'alta disponibilità.
  • Le dimensioni della cache Redis dovrebbero essere approssimativamente uguali alle dimensioni della cache di Looker. Per impostazione predefinita, la cache di Looker ha una dimensione di 2 GB per nodo, quindi se disponi di un cluster Looker a tre nodi, è consigliabile utilizzare 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 un AWS ElastiCache o un Google MemoryStore, purché non sia una configurazione del cluster Redis.

Inoltre, il sistema di crittografia GCM di Looker è necessario per utilizzare Redis in Looker. Prima di abilitare Redis, devi aggiornare la crittografia per le istanze che la utilizzano. Se provi ad abilitare 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, vedi 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 rimandi all'URL di connessione di 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 l'ambiente e gli script di avvio in base alle esigenze per includere la variabile di ambiente, quindi avviare tutti i nodi.

Per arrestare Looker, esegui i comandi seguenti su ciascun nodo:

cd looker
./looker stop

Quindi, ad esempio, se hai un'istanza Redis locale sullo stesso host sulla 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 verificare se la cache di Redis è abilitata, cerca le voci nel log Looker. Dovrebbero essere presenti voci di log simili alla seguente:

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