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 キャッシュを有効にするには、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