説明
rediscを使用すると、3600秒までのレスポンスをキャッシュできます。Redisでのキャッシュは、複数のCoreDNSインスタンスがVIPを共有するセットアップで最も役立ちます。たとえば、Kubernetesクラスタ内の複数のCoreDNSポッドなどです。
Redisに接続できない場合、このプラグインはnoopになります。cacheプラグインとrediscプラグインを一緒に使用できます。この場合、cacheはL1、rediscはL2レベルキャッシュです。複数のCoreDNSインスタンスが同じアイテムでキャッシュミスが発生した場合、すべてがアップストリームから同じ情報をフェッチしてキャッシュを更新します。つまり、それらのインスタンス間には(追加の)調整はありません。
Redisが利用できない場合、CoreDNSは何もキャッシュしません。メトリクスが有効になっている場合、これはset_errors_total
メトリクスに表示されます。
構文
redisc [TTL] [ZONES...]
- TTL:最大のTTL(秒)指定がない場合、最大のTTLが使用されます。noerrorレスポンスの場合は3600、deny of existenceレスポンスの場合は1800です。TTLを300に設定すると(
redisc 300
)、最大300秒間レコードがキャッシュされます。 - ゾーン:キャッシュするゾーン。空の場合、構成ブロックのゾーンが使用されます。
Redisキャッシュの各要素は、そのTTL(最大値はTTL)に従ってキャッシュされます。ネガティブキャッシュの場合、SOAのMinTTL値が使用されます。エンドポイントが指定されていない場合、デフォルトの127.0.0.1:6379
が使用されます。
詳細に制御したい場合
redisc [TTL] [ZONES...] {
endpoint ENDPOINT
}
- 上記と同じTTLおよびZONES。
endpoint
:Redisで使用するENDPOINTを指定します。デフォルトでは127.0.0.1:6379
です。
メトリクス
監視が有効になっている場合(prometheusディレクティブ経由)、次のメトリクスがエクスポートされます。
coredns_redisc_hits_total{server}
:キャッシュヒット数。coredns_redisc_misses_total{server}
:キャッシュミス数。coredns_redisc_set_errors_total{server}
:Redisに接続した際のエラー数。coredns_redisc_drops_total{server}
:ドロップされたメッセージ数。
server
ラベルは、リクエストを処理したサーバーを示します。詳細については、metricsプラグインを参照してください。
例
すべてのゾーンのキャッシュを有効にし、ローカルでキャッシュし、クラスタ全体のRedisで40秒間キャッシュします。
. {
cache 30
redisc 40 {
endpoint 10.0.240.1:69
}
whoami
}
GoogleのPublic DNSにプロキシし、example.org(およびそれ以下)のレスポンスのみをキャッシュします。
. {
proxy . 8.8.8.8:53
redisc example.org
}
関連項目
Redisの詳細については、Redisサイトを参照してください。redisという名の外部プラグインはすでに存在するため、これはrediscと名付けられています。
バグ
ユニットテストはわずかです。