Como ativar um cache do Redis em uma instância hospedada pelo cliente

O Looker mantém um cache como parte de cada instância. O cache padrão do Looker é uma solução personalizada de armazenamento em cache baseada em várias camadas: na memória, no disco local e no disco remoto. O banco de dados interno do Looker é usado como um índice que identifica onde os objetos armazenados em cache estão localizados no sistema.

Se você hospedar sua própria instância do Looker, terá a opção de configurá-lo para usar um cache do Redis hospedado separadamente. Um cache Redis pode oferecer os seguintes benefícios:

  • Melhoria na recuperação de cache: a melhoria principal estará em tempos consistentes de recuperação de cache. À medida que o número de nós em um cluster do Looker aumenta, a comunicação entre nós pode prejudicar o desempenho do cache. A nova arquitetura de cache do Redis consolida o cache, o que resulta em tempos de recuperação consistentes, independentemente do tamanho do cluster do Looker.
  • Menos carga: além disso, o cache está em um nível separado de sua instância do Looker, o que leva a menos carga na instância do Looker.
  • Escalonabilidade: o uso de um cache Redis também permite que ele seja escalonado de maneira independente da instância do Looker.

Requisitos

O Looker é compatível com as versões 4.0.x e 5.0.x do Redis. Para usar um cache do Redis com o Looker, sua instância do Redis precisa atender aos seguintes requisitos:

  • A instância do Redis precisa estar acessível pela instância do Looker.
  • A instância do Redis não pode ser um cluster. No entanto, é possível usar uma configuração primária/réplica para alta disponibilidade.
  • O tamanho do cache do Redis precisa ser aproximadamente igual ao do Looker. Por padrão, o cache do Looker é de 2 GB por nó. Portanto, se você tiver um cluster do Looker de três nós, é recomendado um cache do Redis de 6 GB.
  • A configuração do Redis maxmemory-policy precisa ser definida como volatile-lru.
  • Será necessário desativar qualquer autenticação do Redis. Todos os dados armazenados no Redis são criptografados na instância do Looker antes de serem enviados para o servidor do Redis.
  • É possível usar uma opção do Redis hospedada em um AWS ElastiCache ou um Google MemoryStore, desde que não seja uma configuração de cluster do Redis.

Além disso, o sistema de criptografia do GCM é necessário para usar o Redis no Looker. É necessário atualizar a criptografia das instâncias que usam criptografia legada antes de ativar o Redis. Se você tentar ativar o Redis sem a criptografia GCM, o Looker não iniciará com uma mensagem de erro semelhante a esta:

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

Para instruções sobre como fazer upgrade da criptografia legada para a criptografia do GCM, consulte a página de documentação Migração da criptografia GCM AES-256.

Como configurar uma variável de ambiente para ativar o cache do Redis

Para ativar o cache do Redis, defina a variável de ambiente LOOKER_REDIS_CACHE_DISCOVERY para apontar para o URL de conexão do Redis e, em seguida, faça uma reinicialização completa da instância do Looker, incluindo todos os nós no cluster. Recomendamos que você encerre o servidor completamente, modifique o ambiente e os scripts de inicialização conforme necessário para incluir a variável de ambiente. Em seguida, inicie todos os nós.

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

cd looker
./looker stop

Por exemplo, se você tiver uma instância local do Redis no mesmo host na porta padrão, defina a variável de ambiente LOOKER_REDIS_CACHE_DISCOVERY da seguinte maneira:

export LOOKER_REDIS_CACHE_DISCOVERY=redis://localhost:6379

Em seguida, reinicie o Looker:

./looker start

Como verificar se o cache do Redis está ativado

Para saber se o cache do Redis está ativado, procure entradas no seu registro do Looker. Deve haver entradas de registro 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