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 に保存されるすべてのデータは、Redis サーバーに送信される前に Looker インスタンスで暗号化されます。
- 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 キャッシュを有効にするには、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