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 インスタンスに送られる前に 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