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

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

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

  • Recupero della cache migliorato: il miglioramento principale prevede tempi coerenti di recupero della cache. Con l'aumento del numero di nodi in un cluster Looker, la comunicazione tra nodi può ridurre le prestazioni della cache. La nuova architettura della cache Redis consolida la cache, determinando tempi coerenti per il recupero della cache indipendentemente dalle dimensioni del cluster Looker.
  • Meno carico: inoltre, la cache si trova in un livello separato rispetto all'istanza di Looker, il che comporta un carico minore sull'istanza di Looker.
  • Scalabilità: l'uso 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, ma puoi utilizzare una configurazione primaria o di replica per garantire l'alta disponibilità.
  • Le dimensioni della cache Redis devono essere approssimativamente uguali a quelle della cache di Looker. Per impostazione predefinita, la cache di Looker è di 2 GB per nodo: se hai un cluster Looker a tre nodi, ti consigliamo di utilizzare una cache Redis da 6 GB.
  • La configurazione maxmemory-policy Redis deve essere impostata su volatile-lru.
  • Dovrai disattivare qualsiasi autenticazione Redis. Tutti i dati archiviati in Redis vengono criptati nell'istanza Looker prima di essere inviati al server Redis.
  • Puoi utilizzare un'opzione Redis ospitata su AWS ElastiCache o Google MemoryStore, purché non sia una configurazione di cluster Redis.

Inoltre, per utilizzare Redis in Looker è necessario il sistema di crittografia GCM di Looker. Prima di attivare Redis, devi aggiornare la crittografia per le istanze che utilizzano la crittografia legacy. Se tenti di abilitare Redis senza crittografia GCM, Looker non inizierà 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 legacy alla crittografia GCM, consulta la pagina della documentazione relativa alla migrazione alla crittografia AES-256 di 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 della connessione Redis, quindi eseguire un riavvio completo della tua istanza 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 questi comandi su ciascun nodo:

cd looker
./looker stop

Quindi, ad esempio, se hai un'istanza Redis locale sullo stesso host e sulla porta predefinita, imposta la variabile di ambiente LOOKER_REDIS_CACHE_DISCOVERY come segue:

export LOOKER_REDIS_CACHE_DISCOVERY=redis://localhost:6379

Quindi riavvia Looker:

./looker start

Verifica dell'attivazione della cache Redis

Per determinare se la cache Redis è abilitata, cerca le voci nel log di Looker. Dovrebbero esserci 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