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 インスタンスが次の要件を満たしている必要があります。
- Redis インスタンスには Looker インスタンスからアクセスできる必要があります。
- Redis インスタンスはクラスタである必要があります。ただし、プライマリ / レプリカ構成を高可用性のために使用できます。
- Redis キャッシュのサイズは、Looker キャッシュのサイズとほぼ同じにする必要があります。デフォルトでは、ノードあたりの Looker キャッシュは 2 GB です。したがって、3 ノードの Looker クラスタがある場合は、6 GB の Redis キャッシュをおすすめします。
- Redis の
maxmemory-policy
構成をvolatile-lru
に設定する必要があります。 - Redis 認証を無効にする必要があります。Redis に保存されたデータは、すべて Looker インスタンスで暗号化されてから Redis サーバーに送信されます。
- Redis クラスタ構成でない限り、AWS ElastiCache や Google MemoryStore でホストされている 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 キャッシュを有効にするには、Redis 接続 URL を指すように LOOKER_REDIS_CACHE_DISCOVERY
環境変数を設定して、クラスタ内のすべてのノードを含めて 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