web-dev-qa-db-ja.com

bind9;エントリの有効期限が切れた後にエントリを自動的に更新する方法

キャッシュの有効期限が切れた場合に、キャッシュ内のエントリを自動的に更新する方法を探しています。

たとえば、example.comのTTLは60ですが、期限切れになった場合は自動的に更新して、ユーザーがexample.comにクエリを実行したときに、新しいバージョンが既にキャッシュにあるようにします。

これはバインド内で可能ですか?

ありがとう!

2
Susan

いいえ、ありません。キャッシュは、エントリが初めてアクセスされたときに自動的に「記録」して、後でアクセスを高速化するように設計されています。あなたが説明しているように、「事前キャッシュ」エントリにパフォーマンスの向上はありません。

1
Nathan C

BINDは、prefetchと呼ばれる手法をサポートしています。プリフェッチBINDを使用すると、期限切れが近づいているエントリが自動的に更新されます。以下は、プリフェッチの構文です。

 Sudo vim /etc/bind/named.conf.options
 ...
 options {
 ...
 prefetch 2 9;
};
...

ご覧のとおり、これにはtrigger(ここでは2)とeligibility(ここでは9)の2つの数字があります。これは、残りのTTLが2秒を下回った場合、最初のTTLが9秒を超えたすべてのエントリのDNSエントリを更新するようにBINDに指示します。したがって、更新されません。すべてのエントリを盲目的に更新します。代わりに、最初のTTLが適格性よりも大きい)エントリのみを監視し、これらのエントリの残りのTTLがトリガーを下回ると値はそれらを更新します。適格性とトリガーの値は秒単位です。

したがって、example.comのTTLが60秒(つまり、レコードがフェッチされたときはTTL))であるとすると、残りの= TTL 10秒を下回った場合、エントリを更新する必要があります。以下は、構成ファイルのプリフェッチオプションです。

prefetch 10 60

さらに読む: https://kb.isc.org/article/AA-01122/

1
Sahil Singh