Ativar uma cache Redis numa instância alojada pelo cliente

O Looker mantém uma cache como parte de cada instância. A cache predefinida do Looker é uma solução de colocação em cache personalizada que se baseia em várias camadas: na memória, no disco local e no disco remoto. A base de dados interna do Looker é usada como um índice que identifica a localização dos objetos em cache no sistema.

Se estiver a alojar a sua própria instância do Looker, pode configurar opcionalmente o Looker para usar uma cache Redis alojada separadamente. Uma cache Redis pode oferecer as seguintes vantagens:

  • Obtenção de cache melhorada: a principal melhoria vai ser nos tempos de obtenção de cache consistentes. À medida que o número de nós num cluster do Looker aumenta, a comunicação entre nós pode degradar o desempenho da cache. A nova arquitetura de cache Redis consolida a cache, o que resulta em tempos de obtenção da cache consistentes, independentemente do tamanho do seu cluster do Looker.
  • Menos carga: além disso, a cache está num nível separado da sua instância do Looker, o que leva a uma menor carga na instância do Looker.
  • Escalabilidade: a utilização de uma cache Redis também permite que a cache seja dimensionada independentemente da sua instância do Looker.

Requisitos

O Looker suporta as versões 4.0.x, 5.0.x e 7.2.x do Redis. Para usar uma cache Redis com o Looker, a sua instância Redis tem de cumprir os seguintes requisitos:

  • A instância de Redis tem de estar acessível a partir da instância do Looker.
  • A instância do Redis não pode ser um cluster. No entanto, pode usar uma instância de réplica para alta disponibilidade.
  • O tamanho da cache do Redis deve ser aproximadamente igual ao tamanho da cache do Looker. Por predefinição, a cache do Looker é de 2 GB por nó. Por isso, se tiver um cluster do Looker de três nós, recomenda-se uma cache do Redis de 6 GB.
  • A configuração do Redis maxmemory-policy deve ser definida como volatile-lru.
  • Tem de desativar qualquer autenticação do Redis. Todos os dados armazenados no Redis são encriptados na instância do Looker antes de serem enviados para o servidor Redis.
  • Pode usar uma opção Redis alojada num AWS ElastiCache ou num Google Memorystore, desde que não seja uma configuração de cluster Redis.

Além disso, o sistema de encriptação GCM do Looker é necessário para usar o Redis no Looker. Tem de atualizar a encriptação para instâncias que usam a encriptação antiga antes de ativar o Redis. Se tentar ativar o Redis sem a encriptação GCM, o Looker não é iniciado e é apresentada uma mensagem de erro semelhante à seguinte:

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

Para ver instruções sobre a atualização da encriptação antiga para a encriptação GCM, consulte a página de documentação Migrar para a encriptação AES-256 GCM.

Definir uma variável de ambiente para ativar a cache do Redis

Para ativar a cache Redis, tem de definir a variável de ambiente LOOKER_REDIS_CACHE_DISCOVERY para apontar para o URL de ligação do Redis e, em seguida, fazer um reinício completo da instância do Looker, incluindo todos os nós no cluster. Recomendamos que encerre completamente o servidor, modifique os scripts de ambiente e de arranque conforme necessário para incluir a variável de ambiente e, em seguida, inicie todos os nós.

Para encerrar o Looker, execute os seguintes comandos em cada nó:

cd looker
./looker stop

Em seguida, por exemplo, se tiver uma instância Redis local no mesmo anfitrião na porta predefinida, defina a variável de ambiente LOOKER_REDIS_CACHE_DISCOVERY da seguinte forma:

export LOOKER_REDIS_CACHE_DISCOVERY=redis://localhost:6379

Em seguida, reinicie o Looker:

./looker start

Verificar se a cache Redis está ativada

Para determinar se a cache Redis está ativada, procure entradas no registo do Looker. Devem existir entradas de registo semelhantes às seguintes:

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