고객 호스팅 인스턴스에서 Redis 캐시 사용 설정

Looker는 각 인스턴스의 일부로 캐시를 유지합니다. Looker의 기본 캐시는 인메모리, 로컬 디스크, 원격 디스크 등 여러 레이어에 기반한 커스텀 캐싱 솔루션입니다. Looker 내부 데이터베이스는 캐시된 객체가 시스템에서 어디에 있는지 식별하는 색인으로 사용됩니다.

자체 Looker 인스턴스를 호스팅하는 경우 별도로 호스팅되는 Redis 캐시를 사용하도록 Looker를 구성할 수도 있습니다. Redis 캐시는 다음과 같은 이점을 제공합니다.

  • 향상된 캐시 검색 — 주요 개선사항은 일관된 캐시 검색 시간입니다. Looker 클러스터의 노드 수가 증가하면 노드 간 통신으로 인해 캐시 성능이 저하될 수 있습니다. 새로운 Redis 캐시 아키텍처가 캐시를 통합하므로 Looker 클러스터의 크기에 관계없이 일관된 캐시 검색 시간을 확보할 수 있습니다.
  • 부하 감소 — 또한 캐시는 Looker 인스턴스와 별도의 계층에 있으므로 Looker 인스턴스의 부하가 줄어듭니다.
  • 확장성 - Redis 캐시를 사용하면 Looker 인스턴스와 독립적으로 캐시를 확장할 수 있습니다.

요구사항

Looker는 Redis 버전 4.0.x 및 5.0.x를 지원합니다. Looker에서 Redis 캐시를 사용하려면 Redis 인스턴스가 다음 요구사항을 충족해야 합니다.

  • Looker 인스턴스에서 Redis 인스턴스에 액세스할 수 있어야 합니다.
  • Redis 인스턴스는 클러스터가 아니어야 합니다. 그러나 고가용성을 위해 기본/복제본 구성을 사용할 수는 있습니다.
  • Redis 캐시의 크기는 Looker 캐시의 크기와 거의 같아야 합니다. 기본적으로 Looker 캐시는 노드당 2GB이므로 3노드 Looker 클러스터가 있는 경우 6GB Redis 캐시가 권장됩니다.
  • Redis maxmemory-policy 구성은 volatile-lru로 설정해야 합니다.
  • 모든 Redis 인증은 사용 중지해야 합니다. Redis에 저장된 모든 데이터는 Redis 서버로 전송되기 전에 Looker 인스턴스에서 암호화됩니다.
  • AWS ElastiCache 또는 Google MemoryStore에서 호스팅되는 Redis 옵션을 사용할 수 있습니다. 단, Redis 클러스터 구성이 아니어야 합니다.

또한 Looker에서 Redis를 사용하려면 Looker의 GCM 암호화 시스템이 필요합니다. Redis를 사용 설정하기 전에 기존 암호화를 사용하는 인스턴스의 암호화를 업데이트해야 합니다. GCM 암호화 없이 Redis를 사용 설정하려고 하면 Looker가 시작되지 않으며 유사한 오류 메시지가 표시됩니다.

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

기존 암호화에서 GCM 암호화로 업그레이드하는 방법은 AES-256 GCM 암호화로 마이그레이션 문서 페이지를 참조하세요.

Redis 캐시를 사용 설정하기 위한 환경 변수 설정

Redis 캐시를 사용 설정하려면 LOOKER_REDIS_CACHE_DISCOVERY 환경 변수가 Redis 연결 URL을 가리키도록 설정한 후 클러스터의 모든 노드를 포함하여 Looker 인스턴스를 완전히 다시 시작해야 합니다. 서버를 완전히 종료하고 필요에 따라 환경 및 시작 스크립트를 수정하여 환경 변수를 추가한 후 모든 노드를 시작하는 것이 좋습니다.

Looker를 종료하려면 각 노드에서 다음 명령어를 실행하세요.

cd looker
./looker stop

예를 들어 기본 포트의 동일한 호스트에 로컬 Redis 인스턴스가 있는 경우 LOOKER_REDIS_CACHE_DISCOVERY 환경 변수를 다음과 같이 설정합니다.

export LOOKER_REDIS_CACHE_DISCOVERY=redis://localhost:6379

그런 후 Looker를 다시 시작합니다.

./looker start

Redis 캐시가 사용 설정되어 있는지 확인

Redis 캐시가 사용 설정되어 있는지 확인하려면 Looker 로그에서 항목을 찾습니다. 다음과 비슷한 로그 항목이 있어야 합니다.

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